除了不可能在二进制基数中表示0.1之类的十进制数,以及通过非规范化浮点数设计的不准确性;使用双浮点数时是否还有其他不准确的来源?
答案 0 :(得分:2)
浮动数值不准确的一个奇怪的例子如下:
如果将9999999.4999999999转换为float并返回double,则结果为10000000,即使该值明显接近9999999,即使9999999.499999999正确舍入为9999999。
我知道这是一个非常具体的例子,但更详细(和科学推理!)可以在这里找到:
https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html