我正在处理一些大的数字,遇到了丢失浮点值的问题。你知道吗
当将大数相乘时,浮点部分似乎丢失,丢失,变成零。 当对较小的数字使用相同的代码时,不会发生这种情况。你知道吗
微不足道的例子:
import math
f_ProNum(31 * 61) ## Correct: DEBUG float: 314.833333
f_ProNum(5915587277 * 3367900313) ## Incorrect: DEBUG float: 3320518040297852928.000000
def f_ProNum(v_Num):
"""Syntax: (int); Returns: (float)"""
print("DEBUG float: %f") %((v_Num - 2.0)/6.0) # DEBUG
v_PDNum = (v_Num - 2.0)/6.0
return v_PDNum
正如在第二个调用中看到的,浮动似乎丢失了,或者设置为零。你知道吗
它为什么要这样做,如何解决,如何修复?你知道吗
较大的浮点值将失去精度。为了简化一个位,浮点有一个固定数量的“数字”被使用,称为尾数或有效位,所以足够大的数字基本上要使用小数点左边部分的所有数字。 更多信息请参见:https://en.wikipedia.org/wiki/Floating_point#Internal_representation
为了解决您的问题,您可以尝试使用
decimal
模块,该模块允许您配置所需的精度:https://docs.python.org/2/library/decimal.html相关问题 更多 >
编程相关推荐