1

Variance メソッド (ユニット) をテストしていますが、二重の問題が発生しています。

    public double Variance()
    {
        return Probablity * (1 - Probablity);
    }

    [Test]
    public void Variance_WithSuccessProbablity02_Returns016()
    {
        var bernoulli = new BernoulliDistribution(0.2);

        Assert.AreEqual(bernoulli.Variance(), 0.16);
    }

このテスト結果は、失敗を返します。 失敗: 予想: 0.160000000000003d しかし 0.16d でした

4

3 に答える 3

2

NUnit では、明示的な許容誤差を使用して浮動小数点値を比較できます。

Assert.AreEqual( double expected, double actual, double tolerance );

GlobalSettings.DefaultFloatingPointToleranceまたは、ゼロ以外の値にグローバルに設定できます (デフォルトでは 0.0)。

浮動小数点比較の詳細については、こちらを参照してください

あなたの特定のケースでは、これを試すことをお勧めします:

Assert.AreEqual(bernoulli.Variance(), 0.16, 1.0e-9);
于 2012-08-09T09:48:17.400 に答える
1
Assert.IsTrue(Math.Abs(bernoulli.Variance() - 0.16d) < 0.00001d);
于 2012-08-09T09:48:29.740 に答える