C# 对列表中的两个元素执行算术减法时,值不正确
我正在对double类型的C# 对列表中的两个元素执行算术减法时,值不正确,c#,list,C#,List,我正在对double类型的C#list的元素执行算术减法,有时会导致一些不正确的结果 例如,我在列表tempstrike中有三个元素,如下所示 3.6 3.7 3.8 因此,当我执行listTempStrike[1]-listTempStrike[0]时,结果是0.1,这是真的,但当我执行listTempStrike[2]-listTempStrike[1]时,它返回0.09999999999645,我觉得很奇怪。 有更好的解决方案吗?您需要将类型更改为decimal,而不是float/dou
C#list
的元素执行算术减法,有时会导致一些不正确的结果
例如,我在列表tempstrike
中有三个元素,如下所示
3.6
3.7
3.8
因此,当我执行listTempStrike[1]-listTempStrike[0]
时,结果是0.1
,这是真的,但当我执行listTempStrike[2]-listTempStrike[1]
时,它返回0.09999999999645
,我觉得很奇怪。
有更好的解决方案吗?您需要将类型更改为
decimal
,而不是float
/double
这将解决您的问题欢迎来到二进制浮点数的世界。您可以使用十进制类型而不是双精度,也可以简单地编写数学。舍入(listTempStrike[1]-listTempStrike[0],1),这将舍入到第一个小数。这两个值都是0.09999645