Почему при вычитании двух вещественных результат неправильный?

Всем привет!
Возникла проблема при вычислении определенного интеграла. В общем, вот простой код:
#include <iostream>
int main()
{
    float n, k, result;
    n = 0.460393;
    k = 0.460435;
    result = n - k;
    std::cout<<"n: "<<n<<" k: "<<k<<" result: "<<std::endl;
}

На выходе получается n: 0.460393 k: 0.460435 result: -4.16338e-005
Но мне нужно чтоб результат вычисления, был как в калькуляторе: 0.000042.
Я не могу понять, почему так происходит. Подскажите пожалуйста, может кому то известно.
  • Вопрос задан
  • 339 просмотров
Пригласить эксперта
Ответы на вопрос 3
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Вас не смущает, что в одном числе точка - а в другом запятая?
Ответ написан
Комментировать
Adamos
@Adamos
Для начала присвой эти значения переменным и выведи их - увидишь, во что на самом деле превратились эти числа в формате float.
Если после этого будут вопросы - приводи код.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Вещественные бывают float и double. И у них - разная точность при работе с десятичной системой.
Вообще все они не точно отражают введенную тобой десятичную дробь. Вопрос в том что ты с этого хочешь
получить?

Вот есть онлайн-калькулятор https://www.h-schmidt.net/FloatConverter/IEEE754.html
Понабирай в нем твои числа и понаблюдай во что они превращаются после присвоения. А тогда уже
и вопросы по вычитаню отпадут.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы