首页 > 解决方案 > 如何修复python浮点数指数结果

问题描述

我在 python 中玩数据类型。

每次,当我这样做

remaining_amount = .1 + .1 + .1 - .3

python给出指数结果。

我尝试对 c# 做同样的事情

double remainingAmount = .1 + .1 + .1 - .3

它也以指数形式给出结果。

在这两种情况下,结果都是5.55111512312578E-17

但是在c#中,当我将 double 更改为 decimal 时,结果为 0.0

我无法理解为什么这两种语言都会发生这种情况。我怎样才能在python中解决这个问题?

标签: c#pythondoubledecimal

解决方案


那是数字的Python表示,数字还是一样的。您可以使用它格式化字符串以用于打印目的,例如:

>>> remaining_amount  = .1 + .1 + .1 - .3
>>> remaining_amount
5.551115123125783e-17
>>> f"{remaining_amount:.50f}"
'0.00000000000000005551115123125782702118158340454102'

推荐阅读