1 回答

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
您將獲得與 java/scala 完全相同的結(jié)果。
該math/#Nextafter
函數(shù)“返回 x 之后朝向 y 的下一個(gè)可表示值?!?/p>
Float64frombits(Float64bits(x) + 1)
正如在這個(gè)線程中提到的
float64不能表示所有 16 位數(shù)字。
例如,如果 x = 0.12345678901234567,使用math.Nextafter
,可以看到附近的 float64 值為 ...1234565、...1234566 和 ...1234568
另請參閱“為什么十進(jìn)制數(shù)不能用二進(jìn)制精確表示? ”。
或者這個(gè)線程:
某些可以完全以 10 為基數(shù)表示的數(shù)字不能以 2
為基數(shù)完全表示。例如,數(shù)字 0.1(以 10 為基數(shù))不能完全以 2
為基數(shù)表示。就像 0.1(以 3 為基數(shù))不能完全表示一樣作為以 10 為底的十進(jìn)制值:它是 0.33333(永遠(yuǎn)重復(fù))。
該golang問題4398說明:
const x1 = 1 - float64(1.00000000000000000001) // 0!
規(guī)范說如果“可以由 type 的值表示”,則
x
可以將常量值轉(zhuǎn)換為type 。 該值不能用 表示;最接近的近似值是 1。T
x
T
1.00000000000000000001
float64
- 1 回答
- 0 關(guān)注
- 241 瀏覽
添加回答
舉報(bào)