2014-11-12 2 views
-4

Совсем недавно я столкнулся с этой проблемой в C++C++ числа с плавающей точкой является далеко

std::cout << -5.0000004768371582 + 5 << "\n"; 

Это будет печатать -4.76837e-007, даже если вы думаете, было бы напечатать что-то вроде 0.000000476 ... я знаю плавающие точки не всегда правильные, но я никогда не видел этого раньше. Я также видел, как это происходит с другими числами.

Почему это. И как я могу это исправить?

ответ

9

Число верно, с плавающей точкой есть некоторые проблемы с точностью, но в данном случае это не так.

В этом случае это всего лишь обозначение.

-4.76837e-007 означает

так правильно

+0

А, я вижу. Спасибо за Ваш ответ. – user3116479

5

Выход вы сталкиваясь известен как scientific notation. Если вы хотите, чтобы он отображался в с фиксированной точкой, нотация, используется std::fixed.

#include <iostream> 
#include <iomanip> 

int main() 
{ 
    std::cout << std::fixed << std::setprecision(10) << -5.0000004768371582 + 5 << "\n"; 
} 
Смежные вопросы