C# 如何修复python浮点数的指数结果
我在用python玩数据类型 每次,当我这样做的时候C# 如何修复python浮点数的指数结果,c#,python,double,decimal,C#,Python,Double,Decimal,我在用python玩数据类型 每次,当我这样做的时候 剩余金额=.1+.1+.1-.3 python给出了一个指数结果 我试着用c做同样的事情# double remainingAmount=.1+.1+.1-.3 它还以指数形式给出结果。 在这两种情况下,结果都是5.55111512312578E-17 但在c#中,当我将double改为decimal时,结果是0.0 我无法理解为什么这两种语言都会发生。 在python中如何解决这个问题?这是数字的python表示形式,数字仍然是相同的。 您
剩余金额=.1+.1+.1-.3
python给出了一个指数结果
我试着用c做同样的事情#
double remainingAmount=.1+.1+.1-.3
它还以指数形式给出结果。
在这两种情况下,结果都是5.55111512312578E-17
但在c#中,当我将double改为decimal时,结果是0.0
我无法理解为什么这两种语言都会发生。
在python中如何解决这个问题?这是数字的python表示形式,数字仍然是相同的。 您可以使用它格式化字符串以打印紫色,例如:
>>> remaining_amount = .1 + .1 + .1 - .3
>>> remaining_amount
5.551115123125783e-17
>>> f"{remaining_amount:.50f}"
'0.00000000000000005551115123125782702118158340454102'
@Netwave是正确的,因为您想在python中解决这个问题,方法是
decimal
module:
>>> from decimal import Decimal
>>> Decimal('.1') + Decimal('.1') + Decimal('.1') - Decimal('.3')
Decimal('0.0')
>>> float(Decimal('.1') + Decimal('.1') + Decimal('.1') - Decimal('.3'))
0.0
>>>
你为什么不试试decimal.TryParse(剩余)?