Как исправить функцию C, давая неправильные значения суммирования - PullRequest
0 голосов
/ 10 апреля 2019

Я сделал простую функцию сложения, но получаю неправильные значения суммирования, извините, если это наивно. Но очень хочется знать, почему это происходит. Я хочу альтернативное решение для этого. Заранее спасибо!

Я использую notepad ++ для написания кода и gcc-компилятор в командной строке Windows для выполнения кода.


#include <stdlib.h>
#include <stdio.h>

float addit(float num1, float num2)
    {
        float sumit;
        sumit = num1 + num2;
        return sumit;
    }

int main()
{
    float num1, num2;
    float answer = 0.000000;

    printf("Enter first number: ");
    scanf("%f", &num1);
    printf("Enter second number: ");
    scanf("%f", &num2);

    answer = addit(num1, num2);
    printf("The summation is: %f", answer);

    return 0;
}

Ожидаемый результат сложения 2345,34 и 432,666 составляет 2778,006. Но после исполнения показывает 2778.006104.

Окно Windows cmd, показывающее результат выполнения в виде 2778.006104

1 Ответ

0 голосов
/ 12 апреля 2019

Добро пожаловать в замечательный мир значений с плавающей запятой! Учтите это: между 0 и 1 существует бесконечно много чисел. Там 0,1, и 0,01, и 0,001, и так далее. Но у компьютеров нет бесконечного пространства, так как мы должны хранить числа? Наше решение состояло в том, чтобы ограничить точность хранящихся нами чисел. Как уже упоминалось, тип данных java с плавающей точкой имеет только 6 или 7 цифр точности (в базе 10). Из-за этого вы не можете гарантировать, что результат математической операции с плавающей точкой будет на 100% точным. Вы можете быть только уверены, что первые 6-7 цифр результата будут.

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