鱼C论坛

 找回密码
 立即注册
查看: 4810|回复: 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里面,最好是吧

  1. if (i == 4 && k == 0)
复制代码
这样可以最大程度的减少向123这种k可以为0的情况。
下面是可以用的,你试试吧,是不是这种。

  1. #include <stdio.h>

  2. int main(){
  3.         int i;
  4.         double j,k,result;
  5.        
  6.         scanf("%d %lf %lf",&i,&j,&k);
  7.        
  8.         if(k == 0){
  9.                 printf("%d zero error",(int)j);
  10.                 return 0;
  11.         }else{
  12.                 switch (i) {
  13.                         case 1:
  14.                                 result = j + k;
  15.                                 break;
  16.                         case 2:
  17.                                 result = j - k;
  18.                                 break;
  19.                         case 3:
  20.                                 result = j * k;
  21.                                 break;
  22.                         case 4:       
  23.                                 result = j / k;
  24.                                 break;
  25.                         default:
  26.                                 printf("%d error",i);
  27.                                 break;
  28.                 }
  29.         }
  30.        
  31.         printf("%.2f",result);
  32.        
  33.         return 0;
  34.        
  35. }
复制代码


希望对你有帮助,

源代码

源代码

最佳答案

查看完整内容

这个主要的原因是因为,他仍然输出了result ,而 result == 0 所以他会输出0.00 ,想要修改这个问题,那么就要吧最后一句加入else里面,最好是吧 这样可以最大程度的减少向123这种k可以为0的情况。 下面是可以用的,你试试吧,是不是这种。 希望对你有帮助,
小甲鱼最新课程 -> https://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里面,最好是吧

  1. if (i == 4 && k == 0)
复制代码
这样可以最大程度的减少向123这种k可以为0的情况。
下面是可以用的,你试试吧,是不是这种。

  1. #include <stdio.h>

  2. int main(){
  3.         int i;
  4.         double j,k,result;
  5.        
  6.         scanf("%d %lf %lf",&i,&j,&k);
  7.        
  8.         if(k == 0){
  9.                 printf("%d zero error",(int)j);
  10.                 return 0;
  11.         }else{
  12.                 switch (i) {
  13.                         case 1:
  14.                                 result = j + k;
  15.                                 break;
  16.                         case 2:
  17.                                 result = j - k;
  18.                                 break;
  19.                         case 3:
  20.                                 result = j * k;
  21.                                 break;
  22.                         case 4:       
  23.                                 result = j / k;
  24.                                 break;
  25.                         default:
  26.                                 printf("%d error",i);
  27.                                 break;
  28.                 }
  29.         }
  30.        
  31.         printf("%.2f",result);
  32.        
  33.         return 0;
  34.        
  35. }
复制代码


希望对你有帮助,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-21 12:27:38 From FishC Mobile | 显示全部楼层
%.2f是浮点数小数点后取两位
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

这个后面老是跟个0.00
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

比如:
1+2 = 3.00 (不要这种)
1+2 = 3 (想要这种)

那么就要判断 result 是否小数点之后有数?

很多方式,最简单就是可以自己写:
  1. #include<stdio.h>

  2. int isINT(double f){
  3.         if(!(f - (int)f)) return 1;
  4.         return 0;
  5. }

  6. int main()
  7. {
  8.         double x = 123.456;
  9.         double y = 789.000;
  10.        
  11.         if(isINT(x)) printf("x 小数点之后没有数\n");
  12.         else printf("x 小数点之后有数\n");
  13.        
  14.         if(isINT(y)) printf("y 小数点之后没有数\n");
  15.         else printf("y 小数点之后有数\n");
  16.        
  17.         return 0;
  18. }
复制代码
  1. x 小数点之后有数
  2. y 小数点之后没有数
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

比如:

大佬,这个看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

谢谢,大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

%.2f是浮点数小数点后取两位的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 18:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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