![]() |
1
2
在C中,尝试(double.maxvalue==(double.maxvalue-100)),您将得到正确的…… 但它应该是这样的: http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems 考虑到这一点,您有64位来表示一个大于2^64(double.maxvalue)的数字,因此可能会出现不准确的情况。 |
![]() |
2
4
有关这种愚蠢的更多信息,请参阅这篇关于Windows计算器的漂亮文章。 When you change the insides, nobody notices
|
![]() |
3
2
不,你只是推迟这个问题。双打仍然表现出相同的问题,只是数字更大。 |
![]() |
4
1
爱贝尔
2^64不是双精度数的最大值。2^64是双精度(或任何其他64位类型)可以保存的唯一值的数目。
浮点数的不精确性并非来自于大于
@ DrPizza
真的。我没有解释重复编码。实际上有2个 五十二 -双打1分,双打2分 二十三 -不过,单身人士要1个奶奶。P |
![]() |
5
0
甚至不是;IEEE编码对相同的值使用多个编码。具体来说,NaN由所有位-1的指数表示,然后 任何 尾数的非零值。因此,有2个 五十二 双打保姆,2人 二十三 单身的奶奶。 |
![]() |
6
0
噢,忘了减去无穷大。 |
![]() |
7
0
我学到的这个问题的粗略估计版本是32位浮点给你5位精度,64位浮点给你15位精度。当然,这取决于如何对浮点数进行编码,但这是一个很好的起点。 |