【发布时间】:2021-04-22 11:40:52
【问题描述】:
【问题讨论】:
【问题讨论】:
是的,根据提供的值推断的类型是double (real),它是一个浮点数。如果您想查看精确的数字,请使用小数类型,例如:
range x from decimal(-1) to decimal(1) step decimal(0.2)
【讨论】:
不能期望使用带有浮点数的数字是 100% 精确的。
我写了一个快速的 C 程序,它以float f = 0.0f 开头,然后运行f += 0.1 100 次,同时每 10 次迭代打印一次 f,结果是:
1.000000
2.000000
2.999999
3.999998
4.999998
5.999997
6.999996
7.999995
8.999998
10.000002
你可以看到/修改/运行看到我在这里写的代码:https://onlinegdb.com/HyylownHd
精度不足可能不仅发生在算术计算中,还可能发生在将浮点数转换为字符串的代码中(在层之间传递或在打印之前传递)。
正如@avnera 建议的那样,使用decimal 确实可以提供更好的精度,但您仍然不应该期望它是100% 的精度。
【讨论】: