在Python3(我使用3.6)他们decided to start outputting Integral values。
这给我带来了以下问题。假设我们输入一个大浮点数
math.floor(4.444444444444445e+85)
这种情况下的输出正在
44444444444444447395279681404626730521364975775215375673863470153230912354225773084672
在Python2.7中,输出曾经是4.444444444444445e+85
。
问题1:3.6中的输出是否可重现?换句话说,它是什么?在不同的计算机上多次计算给了我相同的结果。我猜那时它是一个仅取决于输入4.444444444444445e+85
的值。我的猜测是它是浮动的二进制表示的底限。输出的因子分解是
2^232 × 3 × 17 × 31 × 131 × 1217 × 1933 × 13217
因素2 ^ 232接近科学记数法所具有的10 ^ 70,但我不完全确定。
问题2:我想我知道如何采取浮动4.444444444444445e+85
,提取其有效数和指数,并产生自己实际积分值4444444444444445 * 10 ** 70或浮动4.444444444444445e + 85,在我看来似乎更诚实float(4.444444444444445e+85)
楼层的价值。是否有一个简洁的方法来恢复这个(让我称之为)诚实的地板?
好的,我收回了关于将'诚实'称为十进制表示的底线。由于计算机以二进制形式存储数字,因此可以公平地调用为二进制表示计算的输出。如果我对问题1的猜测是正确的话。