若望x 发表于 2020-4-11 14:34:49

decimal.Decimal(0.1),这个方法算小数的加法,小数点后怎么有很多位?

>>> import decimal
>>> decimal.Decimal(0.1)
Decimal('0.1000000000000000055511151231257827021181583404541015625')
>>> decimal.Decimal(0.1)+decimal.Decimal(0.2)
Decimal('0.3000000000000000166533453694')
>>> a=decimal.Decimal(0.1)
>>> a
Decimal('0.1000000000000000055511151231257827021181583404541015625')
>>> b=decimal.Decimal(0.2)
>>> b
Decimal('0.200000000000000011102230246251565404236316680908203125')
>>> c=a+b
>>> c
Decimal('0.3000000000000000166533453694')
>>> print(c)
0.3000000000000000166533453694
之前看是视频练习的时候结果为0.3,我这个那你算错了?

永恒的蓝色梦想 发表于 2020-4-11 14:39:58

decimal要传字符串>>> import decimal
>>> decimal.Decimal('0.1')
Decimal('0.1')
>>> decimal.Decimal('0.1')+decimal.Decimal('0.2')
Decimal('0.3')
>>> a=decimal.Decimal('0.1')
>>> a
Decimal('0.1')
>>> b=decimal.Decimal('0.2')
>>> b
Decimal('0.2')
>>> c=a+b
>>> c
Decimal('0.3')
>>> print(c)
0.3

若望x 发表于 2020-4-11 14:40:59

永恒的蓝色梦想 发表于 2020-4-11 14:39
decimal要传字符串

感谢,回复好快。刚学

永恒的蓝色梦想 发表于 2020-4-11 14:42:55

若望x 发表于 2020-4-11 14:40
感谢,回复好快。刚学

因为 电脑中有些小数不能精确存储,所以会出现这样的问题。
满意就选个最佳吧~
页: [1]
查看完整版本: decimal.Decimal(0.1),这个方法算小数的加法,小数点后怎么有很多位?