为什么会这样?
当我试用时:
Math.pow(2.58)= 288230376151711740 事实上,它是288230376151711744
或
Math.pow(2,57)= 144115188075855870 虽然它真的等于144115188075855872
它只是在没有任何警告的情况下抛出该数字。 我会理解,如果达到最大值,它会停止超过某个数字。然而,这似乎正确计算前n位数,然后仅在数字的最末端出错
答案 0 :(得分:3)
你的数字类型显示精度已经用完了。诀窍在于,在2的幂下,存储在变量中的实际值将是精确的,而当您跟踪它时,引擎将截断显示的值16位,因为它在过程中除以10,并且剩余的最终会被击中如果与没有指数部分的原始值相比,“机器零”。这是为了防止由不精确的浮点除法产生的白噪声被显示。如果你要进入大整数/浮点数,你可以解决这个问题,它存储的位数多于双精度数。