|
发表于 2022-1-5 12:32:14
|
显示全部楼层
我这边也输出这个,说明上面的for循环计算出的result是正确的,问题出在printf
看看这个输出什么
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- double result = 0;
- for(int i=0; i<64; i++){
- result += pow(2, i);
- }
- //printf("result = %.0f\n", result);
- const unsigned char *base = (const unsigned char *)&result;
- for(size_t i = 0; i < 8; ++i) {
- printf("%.2x ", base[i]);
- }
- puts("");
- printf("result = %f\n", result);
- printf("result = %lf\n", result);
- printf("result = %.23e\n", result);
- printf("result = %.23le\n", result);
- printf("result = %.23E\n", result);
- printf("result = %.23lE\n", result);
- return 0;
- }
复制代码
我这边输出这个
- 00 00 00 00 00 00 f0 43
- result = 18446744073709551616.000000
- result = 18446744073709551616.000000
- result = 1.84467440737095516160000e+19
- result = 1.84467440737095516160000e+19
- result = 1.84467440737095516160000E+19
- result = 1.84467440737095516160000E+19
复制代码 |
|