Функция 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 цифры разные).

Может кто-нибудь помочь мне, почему я получаю другой результат?

0 ответов

Другие вопросы по тегам