【发布时间】:2014-12-10 08:32:22
【问题描述】:
我正在处理一些大数字,但遇到了丢失浮点值的问题。
当乘以大数时,浮点部分似乎丢失了,丢失了,变为零。 使用具有较小数字的相同代码时,不会发生这种情况。
简单的例子:
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
从第二次调用中可以看出,float 似乎丢失了,或者设置为零。
为什么要这样做,如何解决和修复?
【问题讨论】:
-
你期望输出什么?
-
一些数字,浮点数,小数点右侧,如第一次调用中返回的较小数字所示。在第二次调用中,丢失的浮点数是“.83333333”。
-
你试过使用十进制模块吗,相关stackoverflow.com/questions/2663612/…
-
@Padraic Cunningham,Erik Haugen 回答了这个问题。我试过了,它奏效了。我选择了他的答案。感谢您的反馈。干杯。
标签: python