当我尝试添加其中一个值为负值的双值时,我已经看到过这种行为,我添加这些值的顺序显然很重要。这是我的测试
double val1 = -0.06, val2 = 0.04, val3 = 0.02;
double resOrder1 = val1 + val2 + val3;
double resOrder2 = val2 + val3 + val1;
Console.WriteLine(resOrder1); //3.46944695195361E-18
Console.WriteLine(resOrder2); //0
我在这里错过了一些关键原则吗?此外,无论添加顺序如何,我如何确保if(resOrder1 == 0){}
为真。不,我不想将数据类型更改为十进制。