太怪了,不知道怎么起标题
有下面一串代码#include <stdio.h>
int main()
{
double a = 0;
a = 10174 / 29220 * 100;
printf("%.2lf", a);
return 0;
}
我在微软VS2019试了好久,我试过把a初始化为0去掉,把.2去掉,在10174前面添上(double),还试过用括号把10174/29220括起来,试过把100移到10174前面来,我也调试过,
在"double a = 0;"这一句的时候a的值为-9.2559631349317831e+61
到了"a = 10174/29220*100"这里,a就变成了0,然后一直到程序结束,a的值都没再变过了
我甚至把文件关了再打开,重新编译,都完全没有变化,这个帖能过审就好了 第一个问题,你初始化a,输出结果为乱码,这个应该跟你的编译器有关。我本地测试,也在线编译器也试过了,没出现你这种类似的乱码。
第二个问题,需要强制转换一下数据类型。#include <stdio.h>
int main(){
double a = 0;
printf("初始化a = %lf\n",a);
a = (double)10174 / 29220 * 100;
printf("计算后a = %.2lf\n",a);
return 0;
}
输出结果为:
初始化a = 0.000000
计算后a = 34.82 整数除以整数,得到的是整数
#include <stdio.h>
int main()
{
double a = 0;
a = (double)10174 / 29220 * 100;
printf("%.2lf", a);
return 0;
}
#include <stdio.h>
int main()
{
double a = 0;
a = 10174 / 29220 * 100;
printf("%.2lf", a);
return 0;
} 耶?强制转换没成功?{:10_257:}按理说加(double)把运算转为浮点数计算就对了,不然赋值前都会成整除运算变成
10174/29220= 0→ 0*100 =0 。要改的话至少让程序认为这是个浮点数运算,实在不行数值改成10174.0这样{:10_297:} 好奇怪,之间明明试过转换的,不行啊,现在又可以了,可能是我之前粗心打错字了吧,但是从来没报过错啊{:10_263:}
页:
[1]