Почему pow работает неверно в компиляторе MinGW
Есть примитивный код
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n = 5;
int cnt = 2;
int q = pow(n,cnt);
cout<<q;
return 0;
}
И почему то при компиляции под MinGW выводит 24, почему это так?
Ответы (1 шт):
Автор решения: joker
→ Ссылка
Потому что pow возвращает результат типа double, который может, из-за ошибок вещественных чисел оказаться, например, 24.999999999999999. Далее, т.к. тип "принимающей" переменной – int, возвращённый double будет тоже преобразован в int, а при преобразовании к int дробная часть отбрасывается, в результате чего и получается 24.
В стандарте не сказано, как именно pow должна выполнять вычисления...