如何解决与 LargeNumber ** 1 和 1.0 的 Python3 不同结果
largenumber = 821424692950225218
largenumber ** 1 = 821424692950225218
largenumber ** 1.0 = 8.214246929502253e+17
int(largenumber**1.0) = 821424692950225280
为什么结果不同?
解决方法
浮点数的存在迫使操作在具有 limited precision 的浮点上下文中执行。另一方面,在所有参数都是整数的情况下,Python 让 **
保留在整数域中,其精度仅受可用内存的限制。一旦结果为浮点数,转换为 int
将无法恢复丢弃的信息。
tl;dr:largenumber ** 1.0
等价于 float(largenumber)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。