#include <stdio.h>
#include <math.h>
#define W 1e5
#define F 1e-2
int main(void)
{
float sum1 = 0, sum2 = 0;
int i,j=1;
for (i = 1; i <= 30; i++)
{
sum1 = sum1 + W;
sum2 = sum2 + F*j;
j=j*2.0;
printf("%f\n",sum2);
}
printf("to Stranger: %.2f yuan\n", sum2);
printf("to Richman: %.2f yuan\n", sum1);
return 0;
}
uj5u.com熱心網友回復:
liuxinjia119@liuxinjia119:~$ vi 1.cliuxinjia119@liuxinjia119:~$ gcc -o 1.out 1.c
liuxinjia119@liuxinjia119:~$ ./1.out
0.010000
0.030000
0.070000
0.150000
0.310000
0.630000
1.270000
2.550000
5.110000
10.230000
20.470001
40.950001
81.910004
163.830002
327.670013
655.350037
1310.710083
2621.430176
5242.870117
10485.750000
20971.509766
41943.031250
83886.070312
167772.156250
335544.312500
671088.625000
1342177.250000
2684354.500000
5368709.000000
10737418.000000
to Stranger: 10737418.00 yuan
to Richman: 3000000.00 yuan
結果帶小數啊,這是我在vim中輸入出來的結果
uj5u.com熱心網友回復:
不想要小數點后面的那些0, 可以用printf的時候%g來替代%f輸出%f輸出默認就是小數點后6位, %g可以把0.100000這種輸出成%0.1
uj5u.com熱心網友回復:
sorry我沒表述清楚,就是答案最后的結果是有一個 .23不是.000,
而且這里宏定義F的小數只到第二位,
那么中間有的結果為什么會
出現在小數點后第六位是非零數
(或者說小數點第二位往后應該是在補位不應該出現非零數)
uj5u.com熱心網友回復:
sum1和sum2 用double 就不會這樣了,轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/122270.html
標籤:新手樂園
下一篇:編譯原理 已知語言求文法


