Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修复python浮点数的指数结果_C#_Python_Double_Decimal - Fatal编程技术网

C# 如何修复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表示形式,数字仍然是相同的。 您

我在用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(剩余)?