电控渣 发表于 2022-3-21 11:14:11

printf输出的结果后面总是带0.00

C丁洞杀O 发表于 2022-3-21 11:14:12

本帖最后由 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;
       
}

希望对你有帮助,

XYcarpenter 发表于 2022-3-21 12:27:38

%.2f是浮点数小数点后取两位

电控渣 发表于 2022-3-21 12:39:11

XYcarpenter 发表于 2022-3-21 12:27
%.2f是浮点数小数点后取两位

问题是。。。
输入 1 10 0
输出 10 zero error0.00

这个后面老是跟个0.00

傻眼貓咪 发表于 2022-3-21 13:44:52

你是想:如果 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:52:21

傻眼貓咪 发表于 2022-3-21 13:44
你是想:如果 result 是有浮点,取后两位,如果 result 没有浮点(整型)则输出整型?

比如:


大佬,这个看不懂{:5_96:}

电控渣 发表于 2022-3-21 13:54:11

C丁洞杀O 发表于 2022-3-21 11:14
这个主要的原因是因为,他仍然输出了result ,而 result == 0 所以他会输出0.00 ,想要修改这个问题, ...

谢谢,大佬

傻眼貓咪 发表于 2022-3-21 13:55:03

电控渣 发表于 2022-3-21 13:54
谢谢,大佬

{:10_245:}{:10_245:}{:10_245:}

anzhexuan666 发表于 2022-3-23 10:56:59


%.2f是浮点数小数点后取两位的
页: [1]
查看完整版本: printf输出的结果后面总是带0.00