Вопрос C++ некорректное сложение -0.0599999 +0.06

Регистрация
15 Июл 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
Добрый день/вечер столкнулся с проблемой что при выполнение сложения -0.0599999 +0.06

получается некорректный вывод -6.10948e-09 также и в js,калькуляторе я знаю что это из-за того как числа хранятся в памяти ,я уже менял тип данных на log float ,long double ,float ,double не помогло ,а другие числа я использовать не могу ,подскажите пожалуйста знатоки как это пофиксить ?
 
А в чем некорректность-то? Если тебе нужен 0 - сделай
bool isZero( double val, double tolerance = 1e-6 )
{
return fabs( val ) < tolerance;
}
 
Предположим, что речь идет о IEE754 64bit
-0.0599999 => -0.059999900000000001842881403035789844579994678497314453125
+0.06 => 0.059999999999999997779553950749686919152736663818359375
Теперь выполняем сложение в столбик
получаем
0.000000099999999995936672547713897074572741985321044921875
PS: а говоришь "я знаю что это из-за того как числа хранятся в памяти"
 
Назад
Сверху