Я понимаю, что это общая проблема. Однако я не могу найти твердый прямой ответ.
16 ^ 54 = 1.0531229167e+65 (this is the result I want)
Когда я использую pow(16,54)
, я получаю:
105312291668557186697918027683670432318895095400549111254310977536.0
Код выглядит следующим образом:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void main(){
double public;
double a = 16;
double b = 54;
public = (pow(a,b));
printf("%.21f\n", public);
}
Код, выполненный с помощью:
gcc main.c -lm
Что я делаю неправильно?
g
. - person Yves Daoust   schedule 08.08.2017main()
возвращаетint
, а неvoid
или что-то еще, независимо от того, что кажется «работающим», независимо от того, сколько раз или на скольких системах он работает). ... на что, как я вижу, теперь указывает ответ. Хороший. В любом случае, UB — это плохие новости, но, к счастью, это легко исправить. - person Pryftan   schedule 15.10.2019