如何使数字总和等于1

ole*_*sii 3 c# double

我使用概率,我需要检查值的总和是1.我正在编写单元测试,其中一个测试失败了.这就是它失败的原因:

double[] probabilities = new[] { 0.4, 0.3, 0.2, 0.1 };
double sum = probabilities.Sum();
//On my PC gives sum of 0.99999999999999989

if (sum != 1)
{
    throw new ArgumentException(
        "Sum of the probabilities does not equal to 1. " +
        "Computed value was: " + sum);
}
Run Code Online (Sandbox Code Playgroud)

我能改变什么才能做到这一点:0.4 + 0.3 + 0.2 + 0.1 = 1

Jus*_*ner 6

double 不会给你这种数学所需的精度.

切换到decimal一切都没关系.