首页 > 解决方案 > 基本算术问题 C# (1.1 vs (1+(1/10))

问题描述

我不明白为什么 a 和 b 没有相同的结果。下面是对应的代码:

    public static void Main()
{
    double a = 10;
    double b = 10;

    for (int i=0; i<10; i++)
    {
        Console.WriteLine("a: " + a);
        Console.WriteLine("b: " + b + "\n");

        a = a * 1.1;
        b = b * (1+(1/10));
    }
}

//输出

甲:10乙:10

甲:11乙:10

甲:12.1乙:10

一个:13.31 乙:10

一个:14.641 乙:10

一个:16.1051 乙:10

答:17.71561 乙:10 ....

我希望你能帮助我。

标签: c#visual-studiounity3d

解决方案


正如上面 Timbo 所述。这完全是关于编译器如何处理数字 1 和 10。为了演示如何计算相同的数字,我已经转换了每个数字。

    public static void Main()
{
    double a = 10;
    double b = 10;

    for (int i=0; i<10; i++)
    {
        Console.WriteLine("a: " + a);
        Console.WriteLine("b: " + b + "\n");

        a = a * 1.1;
        b = b * ((double)1+((double)1/(double)10));
    }
}

现在 a 和 b 都是一样的。我为上面的例子创建了一个 .NET fiddle。https://dotnetfiddle.net/dUZdAi


推荐阅读