Basi c arethmeti c вопрос C# (1,1 против (1+ (1/10)) - PullRequest
0 голосов
/ 25 апреля 2020

Я не понимаю, почему 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));
    }
}

// Ouput

a: 10 b: 10

a: 11 b: 10

a: 12,1 б: 10

а: 13,31 б: 10

а: 14,641 б: 10

а: 16,1051 б: 10

а: 17,71561 б : 10 ....

Надеюсь, вы мне поможете.

1 Ответ

0 голосов
/ 25 апреля 2020

Как уже было сказано Тимбо выше. Все дело в том, как компилятор обрабатывает числа 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 для приведенного выше примера. https://dotnetfiddle.net/dUZdAi

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...