鱼C论坛

 找回密码
 立即注册
查看: 4158|回复: 8

[已解决]printf输出的结果后面总是带0.00

[复制链接]
发表于 2022-3-21 11:14:11 | 显示全部楼层 |阅读模式
20鱼币
最佳答案
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;
        
} 

希望对你有帮助,

源代码

源代码

最佳答案

查看完整内容

这个主要的原因是因为,他仍然输出了result ,而 result == 0 所以他会输出0.00 ,想要修改这个问题,那么就要吧最后一句加入else里面,最好是吧 这样可以最大程度的减少向123这种k可以为0的情况。 下面是可以用的,你试试吧,是不是这种。 希望对你有帮助,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
        
} 

希望对你有帮助,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-21 12:27:38 From FishC Mobile | 显示全部楼层
%.2f是浮点数小数点后取两位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-3-21 12:39:11 | 显示全部楼层
XYcarpenter 发表于 2022-3-21 12:27
%.2f是浮点数小数点后取两位

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

这个后面老是跟个0.00
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-21 13:44:52 From FishC Mobile | 显示全部楼层
你是想:如果 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 小数点之后没有数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

比如:

大佬,这个看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

谢谢,大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-21 13:55:03 From FishC Mobile | 显示全部楼层
电控渣 发表于 2022-3-21 13:54
谢谢,大佬


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-23 10:56:59 | 显示全部楼层

%.2f是浮点数小数点后取两位的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 03:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表