我正在看的代码使用golang float64作为计数器,这是否会导致某些时候精度下降的问题?具体来说,所有整数都表示在float64所涵盖的范围内?如果没有,我在哪里开始遇到问题?我什么时候用完了连续的整数?
如果你想知道,使用float64作为计数器的原因是因为它是[] float64的一部分,它包含许多不是整数的指标。
答案 0 :(得分:4)
Golang规范说,“float64是所有IEEE-754 64位浮点数的集合。”这通常称为双精度数,
http://en.wikipedia.org/wiki/Double-precision_floating-point_format
如果有兴趣,你可以阅读它的所有荣耀细节,但要回答你的问题,引用,
“......下一个范围,从2 53 到2 54 ,一切都乘以2 ......”
因此,如果你想将它用作计数器,即正整数,那么在2 53 = 9,007,199,254,740,992之前你就不会有问题。
答案 1 :(得分:2)
是的,float64有52位来存储您的计数器。你应该准确到2 53 。
(旁注:整个JavaScript语言仅使用浮点。)