|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小甲鱼说最后结果也并非正确答案,因为数值大到unsigned long long也不够用,但当我知道float和double取值范围那么大时,我想如果把数据类型改为float,或许就能做出来了。
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- float sum =0;
- float temp;
- float weight;
- int i;
-
- for (i = 0; i < 64; i++)
- {
- temp = pow(2,i);
- sum = sum + temp;
- }
- weight = sum / 25000;
-
- printf("舍罕王应该给予达依尔%f粒麦子\n",sum);
- printf("如果每25000粒麦子为1kg,那么应该给%f公斤麦子!\n",weight);
-
- return 0;
- }
复制代码
咦?结果比小甲鱼的大,而且小于float取值的最大值,难道说这就是正确答案?
最可靠的做法应该是用 double :
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- double sum = 0;
- double temp;
- double weight;
- int i;
- for (i = 0; i < 64; i++)
- {
- temp = pow(2, i);
- sum = sum + temp;
- }
- weight = sum / 25000;
- printf("舍罕王应该给予达依尔%lf粒麦子\n", sum);
- printf("如果每25000粒麦子为1kg,那么应该给%lf公斤麦子!\n", weight);
- return 0;
- }
复制代码
|
|