Функция pow(), возвращающая другой результат в C++
Как мы знаем, диапазон без знака long long int составляет от 0 до 18,446,744,073,709,551,615
Значит, unsigned long long int способен легко обрабатывать 19-20 цифр.
Итак, я хочу знать, почему моя программа возвращает другое значение.
Программа:
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long int ulli;
int main()
{
double a,b;
cin>>a>>b;
ulli result = (ulli)pow(a,b);
cout<<"result = "<<result<<"\n";
}
После этого ввода: а =15, б = 15
Ожидаемый результат: 437893890380859375 (18-значный номер)
Но это дает: результат = 437893890380859392 (последние 2 цифры разные).
Может кто-нибудь помочь мне, почему я получаю другой результат?