1

我注意到下面的句子

 echo | awk '{OFMT="%.16e";CONVFMT="%.16e";print 10.-0.1*011}'

给出 9.0999999999999996e+00

和这个

 echo | awk '{OFMT="%.16e";CONVFMT="%.16e";print 10.-0.1*11}'

给出 8.9000000000000004e+00

注意 11 左侧的零。这个结果差异可以吗?

谢谢

4

1 回答 1

4

这是因为011被解析为八进制值。如果你这样做

$ echo | awk '{OFMT="%.16e";CONVFMT="%.16e";print 10.-0.1*9}'
9.0999999999999996e+00

你得到相同的结果,因为十进制的 9 是八进制的 011

于 2013-09-24T12:55:26.993 回答