gpt4 book ai didi

python - 从 Python 中的数字中提取小数

转载 作者:太空宇宙 更新时间:2023-11-04 07:26:07 24 4
gpt4 key购买 nike

我正在编写一个函数来从数字中提取小数。忽略异常及其语法,我正在使用 2.5.2(默认 Leopard 版本)。我的函数还不能处理 0。我的问题是,该函数会产生特定数字的随机错误,我不明白原因。我将在代码后发布错误读数。


功能:

def extractDecimals(num):
try:
if(num > int(num)):
decimals = num - int(num)
while(decimals > int(decimals)):
print 'decimal: ' + str(decimals)
print 'int: ' + str(int(decimals))
decimals *= 10
decimals = int(decimals)
return decimals
else:
raise DecimalError(num)
except DecimalError, e:
e.printErrorMessage()


异常类:

class DecimalError(Exception):
def __init__(self, value):
self.value = value

def printErrorMessage(self):
print 'The number, ' + str(self.value) + ', is not a decimal.'


这是我输入数字 1.988 时的错误输出:
decimal: 0.988<br/>
int: 0<br/>
decimal: 9.88<br/>
int: 9<br/>
decimal: 98.8<br/>
int: 98<br/>
decimal: 988.0<br/>
int: 987<br/>
decimal: 9880.0<br/>
int: 9879<br/>
decimal: 98800.0<br/>
int: 98799<br/>
decimal: 988000.0<br/>
int: 987999<br/>
decimal: 9880000.0<br/>
int: 9879999<br/>
decimal: 98800000.0<br/>
int: 98799999<br/>
decimal: 988000000.0<br/>
int: 987999999<br/>
decimal: 9880000000.0<br/>
int: 9879999999<br/>
decimal: 98800000000.0<br/>
int: 98799999999<br/>
decimal: 988000000000.0<br/>
int: 987999999999<br/>
decimal: 9.88e+12<br/>
int: 9879999999999<br/>
decimal: 9.88e+13<br/>
int: 98799999999999<br/>
decimal: 9.88e+14<br/>
int: 987999999999999<br/>
9879999999999998



我不知道为什么会弹出此错误。希望你们能帮帮我。

最佳答案

问题是(二进制) float 不能精确表示为小数。参见 Why can't decimal numbers be represented exactly in binary?获取更多信息。

关于python - 从 Python 中的数字中提取小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1619818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com