Python中大整数int()计算结果异常问题咨询
问题原因及解决方法
- 核心问题出在浮点数精度限制:
你用了/做除法,Python中/会返回浮点数(float类型),而双精度浮点数只能精确表示2^53(约9×10¹⁵)以内的整数。你的计算对象72057594037927935远大于这个值,转换成浮点数时会丢失部分精度,导致除法结果出现偏差。 - 具体验证:
把72057594037927935转成float后,实际存储的是72057594037927936(浮点数无法精确表示原数,只能取最接近的可表示值),用这个数除以3得到24019198012642645.333...,再用int()截断小数部分,就得到了24019198012642644。 - 正确的解决方式:
用Python的整数除法运算符//,它会直接对整数进行精确计算,不会涉及浮点数转换。执行代码print((72057594037927936-1)//3)就能得到正确结果24019198012642645。
内容的提问来源于stack exchange,提问作者tom baker
相关产品推荐
相关产品推荐

