m0_46717120 2020-04-03 16:33 采纳率: 0%
浏览 800

关于c语言的四舍五入问题

1.有两个问题想请教一下
1.1第一个问题
在写程序时有四舍五入的条件,自己编写的时候发现了一个float数据类型的不同之处。
e.g

#include <stdio.h>
int main()
{
double S;
S=0;
scanf("%lf",&S);
printf("%.0f",S);
return 0;   
}

输入2.5会自动四舍五入成3,但是在最后输出的部分改成printf("%.1f",S);时,输入2.55输出就是2.5,如果是2.551输出就是2.6。
请问这里为什么会发生这种情况。
1.2第二个问题
有点伸手党的感觉,但我找了很久网上资料也没找到。
想写一个程序,能根据输入的数据,用户的需求来进行不同位数的四舍五入。
比如输入2.5678,再输入自己想要进行的四舍五入需求进行处理。如果是小数点后3位四舍五入,输出就是2.568,如果是小数点后2位四舍五入,输出就是2.57。请问应该怎么编写?

  • 写回答

2条回答 默认 最新

  • youaremygirl1 2020-04-03 22:09
    关注
        #include<stdio.h>
        int main()
        {
            double s;
            int m;
    
            scanf("%lf",&s) ;
            m=(int)(s+0.5);
            printf("%d\n",m);
            return 0;
         } 
    

    你四舍五入只是四舍五入了最后一位数字,

    评论

报告相同问题?

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题