gpt4 book ai didi

awk 计算给出较大数字的四舍五入答案

转载 作者:行者123 更新时间:2023-12-05 02:58:23 24 4
gpt4 key购买 nike

我有一个 Linux bash 脚本,它使用 awk 计算文件中某些值的总和。我正在使用此语法进行计算:

$ awk "BEGIN { print $first_number + $second_number }"

对于答案是低于 9999.99 的数字的计算,它会正确显示答案。高于该值,它将答案四舍五入到一位小数,或者没有小数位,等等。像这样:

$ awk "BEGIN { print 89.54 + 6789.44 }"
6878.98

$ awk "BEGIN {print 1.66 + 68790.77 }"
68792.4

$ awk "BEGIN {print 1.66 + 687990.77}"
687992

$ awk "BEGIN {print 10100.66 + 6787990.77}"
6.79809e+06

我希望答案显示小数点,并且在所有情况下都保留 2 位小数。

您知道为什么要进行意外舍入吗?谢谢

最佳答案

James's useful answer 之上扩展,你看到这种行为是有原因的。这是因为当使用 print

awk 中名为 OFMT 的预定义变量控制的>

OFMT 的默认值为 "%.6g",它创建的值最多包含六位有效数字。如果您希望 print 表示更准确的表示,请将其更改为例如始终表示小数点后的 2 位数字,例如 "%2.2f"

$ awk 'BEGIN { OFMT = "%2.2f"; print 89.54 + 6789.44 }'
6878.98

$ awk 'BEGIN { OFMT = "%2.2f"; print 1.66 + 68790.77 }'
68792.4

$ awk 'BEGIN { OFMT = "%2.2f"; print 1.66 + 687990.77 }'
687992.43

$ awk 'BEGIN { OFMT = "%2.2f"; print 10100.66 + 6787990.77 }'
6798091.43

参见 herehere ,它解释了这些转化的行为。

关于awk 计算给出较大数字的四舍五入答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59070401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com