我正在尝试用大量数字进行计算x
,我取它的立方根(j = x**(1/3.0)
)然后重新立方它(z = j**3
)。x
应该等于j
,并且是在使用像 26 这样的小数字然后四舍五入时,但是对于非常大的数字,我在保持准确性方面遇到了问题:
1.9.3-p385 :119 > x = 34567898765434567898765677654125 ** 3
1.9.3-p385 :120 > x = BigDecimal.new(x)
1.9.3-p385 :121 > cube_root = x**(1/3.0)
1.9.3-p385 :122 > recubed = cube_root**3
1.9.3-p385 :123 > recubed == x
=> false
1.9.3-p385 :124 > recubed.to_i
=> 41306551989787317397975170279355443182356154696413548486992943670408047235040641261388609159478
1.9.3-p385 :125 > x.to_i
=> 41306551989788217308443399821163722262582437385123598833127062833015560078766131667297533203125
如果不可能得到一个接近的近似值,有没有办法得到一个更准确的结果,其中更多的最高有效位是相同的?