使用java /scala将会得到完全相同的结果,该
math/#Nextafter函数“返回朝Y X后的下一个表示值。”
Float64frombits(Float64bits(x) + 1)
如本主题所述
float64
不能表示所有16位数字。
例如,如果x = 0.12345678901234567,使用math.Nextafter,您可以看到附近的float64值为…
1234565,… 1234566和… 1234568
或者这个线程:
一些在基数10中可以精确表示的数字在基数2中不能完全表示。
例如,数字0.1(基数10)不能在基数2中精确表示。
就像0.1(基数3)一样,也不能精确表示。以10为底的十进制值:它是0.33333(永久重复)。
该golang问题4398说明:
const x1 = 1 - float64(1.00000000000000000001) // 0!
规范说,如果“
可由type的值表示”,则x可以将常量值转换为type 。 该值不能用表示;最接近的近似值为1。T``x``T1.00000000000000000001``float64



