unix 将小数四舍五入小数点后两位
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unix 将小数四舍五入小数点后两位相关的知识,希望对你有一定的参考价值。
在文件夹下有kk.file这个文件,我现在取到了文件中total:这行的数据为:25.456,如下:
tail -10 kk.file | grep "total:" | awk -F: 'print $2'
输出是:25.45642131254
现在想要将它四舍五入成 25.46
我的操作是
tail -10 kk.file | grep "total:" | awk -F: 'print $2' | awk 'BEGINprintf "%.2f\n", $1'
但是输出却是0.00,
求大神解惑!
-F ': '
最后应该执行的是
tail -10 kk.file | grep "total:" | awk -F ': ' 'print $2' | awk 'printf "%.2f\n",$1'
不过很奇怪,awk在处理浮点数后2位的四舍五入时,如果浮点数后第偶数位是5,它不会入,但awk在处理浮点数后奇数位的四舍五入时,也没有此问题,我也奇怪。 参考技术A awk是逐行处理数据的,他的处理分三个阶段,第一阶段包含在BEGIN里,这是在所有数据处理之前的初始化工作,这个时候$1还没有被赋值,因此应该是0来自:求助得到的回答 参考技术A 处理浮点数后2位的四舍五入时,如果浮点数后第偶数位是5,它不会入, 参考技术B 方便的话提供下kk.file内容
只保留小数点后的前两位数字,不四舍五入[重复]
【中文标题】只保留小数点后的前两位数字,不四舍五入[重复]【英文标题】:Keep only first two digits after decimal with no rounding [duplicate] 【发布时间】:2018-03-27 07:33:49 【问题描述】:我只想保留小数点后的前两位,但我不想四舍五入或转换该值。
例如:
143,655 -> 143.65
547934,945 -> 547934,94
转换或舍入值不起作用,它会修改值。
【问题讨论】:
那是Comma
或Dot
?
【参考方案1】:
使用带有截断功能的ROUND()
https://docs.microsoft.com/en-us/sql/t-sql/functions/round-transact-sql
select round(143.655, 2, 1),
round(547934.945, 2, 1)
最后一个参数,非零时会截断
【讨论】:
已解决,非常感谢! @Dorian Stefan 如果它解决了您的问题,请接受此答案。以上是关于unix 将小数四舍五入小数点后两位的主要内容,如果未能解决你的问题,请参考以下文章