|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 chunchun2017 于 2017-9-1 14:13 编辑
今天在调试程序的时候发现python3.6.2中,浮点数只精确到小数点后面第16位,当遇到17位小数时,判断将会出错,如下:
>>> 1/3
0.3333333333333333
>>> 0.36363636363636366>0.36363636363636365
False
>>> round(0.36363636363636366,17)>round(0.36363636363636365,17)
False
>>> 0.36363636363636366<0.36363636363636365
False
>>> 0.36363636363636366==0.36363636363636365
True
请教一下,如果因为题目的要求,程序里面要求比较第17位甚至更多位的小数时,怎么办?
用 分数表达式不会有精度损失
fractions
- >>> from fractions import Fraction
- >>> 1/2 + 1/3 == 5/6
- False
- >>> Fraction(1,2)+Fraction(1,3)==Fraction(5,6)
- True
- >>> Fraction('1/2')+Fraction('1/3')==Fraction('5/6')
- True
- >>>
复制代码
|
|