큰 숫자로 작업하고 부동 값 손실 문제가 발생했습니다.큰 숫자가있는 파이썬 부동 소수점
큰 숫자를 곱하면 부동 소수점 부분이 누락되거나 손실되어 0이됩니다. 숫자가 작은 동일한 코드를 사용하는 경우에는 발생하지 않습니다.
사소한 예 :
두 번째 호출에서 보는 바와 같이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
모듈을 사용하여 시도 할 수 있습니다 문제를 해결하기 위해? –숫자가 작은 첫 번째 호출에서 반환 된 소수점 이하 소수점 숫자 인 소수점 이하 자릿수. 두 번째 호출에서 손실 된 부동 소수점은 ".83333333"입니다. –
십진 모듈을 사용해 보셨습니까? 관련 http://stackoverflow.com/questions/2663612/nicely-representing-a-floating-point-number-in-python –