Shell GAWK求和前的柱圆

Shell GAWK求和前的柱圆,shell,awk,Shell,Awk,在使用GAWK求和之前,我想将第29列四舍五入到5位小数。迄今为止的代码- gawk -v OFMT=%.20g -F'\t' '{ sum += $29 } END{ print sum, NR-1}' table.csv 在使用GAWK进行求和之前 我认为以下措施应该有效: sum += sprintf("%.5f", $29) 但要注意浮点精度。请提供一个值,通常,您以最大精度进行运算,并在所有运算完成后进行四舍五入-在您的情况下,对总和进行四舍五入。定义如何为您的

在使用GAWK求和之前,我想将第29列四舍五入到5位小数。迄今为止的代码-

gawk -v OFMT=%.20g -F'\t' '{ sum += $29 } END{ print sum, NR-1}' table.csv
在使用GAWK进行求和之前

我认为以下措施应该有效:

sum += sprintf("%.5f", $29)

但要注意浮点精度。

请提供一个值,通常,您以最大精度进行运算,并在所有运算完成后进行四舍五入-在您的情况下,对总和进行四舍五入。定义如何为您的目的进行“四舍五入”-向上、向下、接近零、远离零、无偏或其他(请参见[)。您的问题包括一个简洁、可测试的示例输入,该示例输入演示了您需要的舍入类型,以便我们可以帮助您。看看这是否不清楚。GNU AWK文档描述了执行传统舍入的with函数,与
printf
doall无关,这取决于OP想要的舍入类型和内容OPs机器工具上的awk四舍五入类型。在许多机器上,它会将尾随的“.5”四舍五入到最近的偶数(即,既不向上也不向下,而是“无偏”),因此1.5舍五入到2,但2.5也舍五入到2,这可能是不直观的。5位小数通常不包括指数。因此“%.5e”可能更好。