Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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# 对列表中的两个元素执行算术减法时,值不正确_C#_List - Fatal编程技术网

C# 对列表中的两个元素执行算术减法时,值不正确

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

我正在对double类型的
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