四舍五入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四舍五入相关的知识,希望对你有一定的参考价值。

我正在处理一个包含一系列不同精度的十进制值的文件,我需要将这些数字除以100,而且我不需要四舍五入。

awk '{val = $1 / 100; print val}' input_file.txt

输入文件。

0.123456789012
0.123456789012345
0.12345678901234567

输出:

0.00123457
0.00123457
0.00123457

我想不对结果进行四舍五入,得到以下输出。

0.00123456789012
0.00123456789012345
0.0012345678901234567

先谢谢你

答案

很有趣的问题,因为你希望不同的数字有不同的精度。 这里有一个变通的方法

$ awk '{d=length($1); printf "%."d"f
", $1/100}' file

0.00123456789012
0.00123456789012345
0.0012345678901234567

这也应该涵盖大于1的数字。

$ awk '{d=length($1); if($1>1) d+=1-length(int($1)); printf "%."d"f
", $1/100}' file

可能需要调整负数......

另一答案

你能不能试试下面的命令。

awk '{sub(/./,".00")} 1' Input_file


用OP的原始命令。

awk '{val = $1 / 100; sub(/./,".00",val);print val}' input_file.txt

以上是关于四舍五入的主要内容,如果未能解决你的问题,请参考以下文章

两个BigDecimal数值相除取整数,不要求四舍五入,代码怎么写

代码优化之整型除以2的指数并四舍五入

代码优化之整型除以2的指数并四舍五入

为啥我的代码的最后一行没有打印?另外,我将数字四舍五入到小数点后两位的最简单方法是啥? [复制]

实现浮点数的四舍五入RoundOff,保留几位小数

php中的四舍五入函数代码(floor函数、ceil函数、round与intval)