|
|
5鱼币
我在自定义函数,进行英尺与米的转换时,发现一个问题,在10001和11转换时,打印出的结果会有非常非常小的一个数出现,而在1001和101时却没有。请问这种结果是否会影响大数运算的结果?因为:用m(11)计算的结果去乘以1e+27,显示的结果是3.3528e+27,看上去没有影响。
我在网上找到的答案是:‘这是因为小数以二进制形式表示时的有穷性导致的’,看不懂。
我只要知道结果不影响运算,平时可以忽略它就行了,是吧?
程序和打印的结果分别如下所示:
--------------------------------------------------
def m(a):
x=int(a)
y=0.3048
z=x*y
return z
--------------------------------------------------
>>> m(10001)
3048.3048000000003
>>> m(1001)
305.1048
>>> m(101)
30.7848
>>> m(11)
3.3528000000000002
>>> m(11)*1e+27
3.3528e+27
>>>
round
- >>> ich=.3048
- >>> 1001*ich
- 305.1048
- >>> 10001*ich
- 3048.3048000000003
- >>> round(10001*ich,4)
- 3048.3048
复制代码
|
|