Python浮点丢失大数

2024-03-29 13:26:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一些大的数字,遇到了丢失浮点值的问题。你知道吗

当将大数相乘时,浮点部分似乎丢失,丢失,变成零。 当对较小的数字使用相同的代码时,不会发生这种情况。你知道吗

微不足道的例子:

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

正如在第二个调用中看到的,浮动似乎丢失了,或者设置为零。你知道吗

它为什么要这样做,如何解决,如何修复?你知道吗


Tags: 代码debugimport情况数字mathfloatnum
1条回答
网友
1楼 · 发布于 2024-03-29 13:26:40

较大的浮点值将失去精度。为了简化一个位,浮点有一个固定数量的“数字”被使用,称为尾数或有效位,所以足够大的数字基本上要使用小数点左边部分的所有数字。 更多信息请参见:https://en.wikipedia.org/wiki/Floating_point#Internal_representation

为了解决您的问题,您可以尝试使用decimal模块,该模块允许您配置所需的精度:https://docs.python.org/2/library/decimal.html

相关问题 更多 >