值22.8不能准确地以二进制浮点为单位。您看到的是基于显示格式的表示形式。不同的显示方法可以使用不同的显示格式。显示不同数量的数字和舍入意味着22.8和22.7999999对于舍入后显示的数字数量都是正确的。请注意,显示了22.7999999,而不是22.8000000,因为下一个数字为2个,因此显示的值已舍入。
这是基础依赖性的,这就是一个数字库中可能确切的事情,可能无法在不同的数字库中确切。在这种情况下,十进制数中的22.8在二进制数库中不能精确。
这就是存在NSDECIMAL的原因,原因是货币值不使用浮点。
这在某种程度上等同于在基本小数中显示PI的值,数字的数量是无限的,因此对于每个显示器,有人决定要显示多少位数字。有趣的是,PI可以在PI数基库中准确表示(但有用)。 :-)
如果是 float
和 double
可以表示有限数字。