I'v врезался в другую аномалию:C++ возвращает 7.45058 вместо 0
float T = 19.0/99.0;
float moo = (99.0 * T) - 19.0;
, как и ожидалось, Т = 0,191919, однако «мычание» предназначается, чтобы быть 0, но вместо этого 7,450586. Я могу только предположить, что некоторая форма литья снова требуется где-то.
Попробуйте использовать 'double' вместо' float'! Также хорошо читайте: [что каждый компьютерный ученый должен знать о арифметике с плавающей точкой] (http://perso.ens-lyon.fr/jean-michel.muller/goldberg.pdf) –
Я получаю 7.45058e-08, a очень маленький число. Вы, наверное, тоже. – molbdnilo
Вы уверены, что это '7.450586', а не' 7.450586e-008' или какой-либо другой действительно небольшой экспонент? –