四舍五入

问题描述 投票:0回答:1

我正在处理一个包含一系列不同精度的十进制值的文件,我需要将这些数字除以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

先谢谢你

bash unix awk
1个回答
3
投票

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

$ awk '{d=length($1); printf "%."d"f\n", $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\n", $1/100}' file

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


1
投票

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

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


用OP的原始命令。

awk '{val = $1 / 100; sub(/\./,".00",val);print val}' input_file.txt
© www.soinside.com 2019 - 2024. All rights reserved.