【发布时间】:2014-01-22 16:06:06
【问题描述】:
我了解这是一个常见问题。但是我找不到一个可靠的直接答案。
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格式说明符。 -
您的代码是 UB(
main()返回int- 不是void或其他任何东西,无论什么看起来“有效”,无论它运行了多少次或运行了多少个系统)。 ...我现在看到的答案指出了这一点。好的。无论如何 UB 是个坏消息,但幸运的是这个很容易修复。