printf输出的结果后面总是带0.00
本帖最后由 C丁洞杀O 于 2022-3-21 13:15 编辑电控渣 发表于 2022-3-21 12:39
问题是。。。
输入 1 10 0
输出 10 zero error0.00
这个主要的原因是因为,他仍然输出了result ,而 result == 0 所以他会输出0.00 ,想要修改这个问题,那么就要吧最后一句加入else里面,最好是吧
if (i == 4 && k == 0)
这样可以最大程度的减少向123这种k可以为0的情况。
下面是可以用的,你试试吧,是不是这种。
#include <stdio.h>
int main(){
int i;
double j,k,result;
scanf("%d %lf %lf",&i,&j,&k);
if(k == 0){
printf("%d zero error",(int)j);
return 0;
}else{
switch (i) {
case 1:
result = j + k;
break;
case 2:
result = j - k;
break;
case 3:
result = j * k;
break;
case 4:
result = j / k;
break;
default:
printf("%d error",i);
break;
}
}
printf("%.2f",result);
return 0;
}
希望对你有帮助, %.2f是浮点数小数点后取两位 XYcarpenter 发表于 2022-3-21 12:27
%.2f是浮点数小数点后取两位
问题是。。。
输入 1 10 0
输出 10 zero error0.00
这个后面老是跟个0.00 你是想:如果 result 是有浮点,取后两位,如果 result 没有浮点(整型)则输出整型?
比如:
1+2 = 3.00 (不要这种)
1+2 = 3 (想要这种)
那么就要判断 result 是否小数点之后有数?
很多方式,最简单就是可以自己写:
#include<stdio.h>
int isINT(double f){
if(!(f - (int)f)) return 1;
return 0;
}
int main()
{
double x = 123.456;
double y = 789.000;
if(isINT(x)) printf("x 小数点之后没有数\n");
else printf("x 小数点之后有数\n");
if(isINT(y)) printf("y 小数点之后没有数\n");
else printf("y 小数点之后有数\n");
return 0;
}x 小数点之后有数
y 小数点之后没有数 傻眼貓咪 发表于 2022-3-21 13:44
你是想:如果 result 是有浮点,取后两位,如果 result 没有浮点(整型)则输出整型?
比如:
大佬,这个看不懂{:5_96:} C丁洞杀O 发表于 2022-3-21 11:14
这个主要的原因是因为,他仍然输出了result ,而 result == 0 所以他会输出0.00 ,想要修改这个问题, ...
谢谢,大佬 电控渣 发表于 2022-3-21 13:54
谢谢,大佬
{:10_245:}{:10_245:}{:10_245:}
%.2f是浮点数小数点后取两位的
页:
[1]