18798332503 发表于 2021-5-16 12:22:29

函数文档

>>> def exchangeRate(dollar):
        '''
        功能:汇率转换,美元 -> 人民币
        汇率:3.6
        日期:2020-5-16
        '''
        return dollar * 3.6

>>> exchangeRate(10)
36.0
>>> def exchangeRate(dollar):
        '''
        功能:汇率转换,美元 -> 人民币
        汇率:6.54
        日期:2020-5-16
        '''
        return dollar * 6.54

>>> exchangeRate(10)
但是当汇率为3.14的时候会出现后面的一大串数字?
>>> def exchangeRate(dollar):
        '''
        功能:汇率转换,美元 -> 人民币
        汇率:3.14
        日期:2020-5-16
        '''
        return dollar * 3.14

>>> exchangeRate(10)
31.400000000000002
>>>

叙白 发表于 2021-5-16 12:34:08

二进制存储小数会有误差

柿子饼同学 发表于 2021-5-16 13:02:49

本帖最后由 柿子饼同学 于 2021-5-16 13:05 编辑

>>> a = 0.1
>>> b = 0.2
>>> a + b
0.30000000000000004
>>>
楼上说的对,会存在误差
如果不想有误差可以用decimal模块,如下>>> import decimal as d
>>> a = d.Decimal('0.1')               #注意,参数是一个字符串
>>> b = d.Decimal('0.2')
>>> print(a + b)
0.3
>>>
看,这时误差就消除了~{:10_256:}

18798332503 发表于 2021-5-16 14:03:13

叙白 发表于 2021-5-16 12:34
二进制存储小数会有误差

那么为什么其他的两位小数没有报错呢{:10_254:}

18798332503 发表于 2021-5-16 14:04:06

柿子饼同学 发表于 2021-5-16 13:02
楼上说的对,会存在误差
如果不想有误差可以用decimal模块,如下
看,这时误差就消除了~

那为什么其他两位小苏没有报错呢{:10_266:}

柿子饼同学 发表于 2021-5-16 15:44:49

18798332503 发表于 2021-5-16 14:04
那为什么其他两位小苏没有报错呢

这就跟二进制存储有关,你想想,如果都有误差谁还要二进制呢
页: [1]
查看完整版本: 函数文档