实现四舍五入/浮点数与整数的转换

今天牛客网上刷题,有个四舍五入的题,首先想到的就是把变量 + 0.5 后利用c语言的 / 整除实现四舍五入,

#include<stdio.h>
int main()
{
	float a = 0;
	float b = a + 0.5;
	scanf("%f", &a);
	printf("%d", b / 1);
	return 0;
}

不过代码敲上去后发现被除数是浮点数,或者输出结果必须是浮点数,这还需要处理,暂时没想到办法,突发奇想用 "%.0f" 来限制输出的小数位数,

#include<stdio.h>
int main()
{
    float a = 0;
    while(scanf("%f", &a) != EOF)
    printf("%.0f\n", a / 1);
   

    return 0;
}

神奇的事情发生了,代码直接自带四舍五入(上面代码 a / 1 只写 a 也行)


https://blog.csdn.net/weixin_38505045/article/details/79994536#

这是他人 “+ 0.5 后利用c语言的 / 整除实现四舍五入” 的思路的解决方案


这是 %0.f 自动四舍五入的原因:

“%.0f 是输出 float 型或 double 型数据,按定点格式,小数点以下占0位。
也就是输出浮点数的整数部分,不输出小数点和小数点以下部分。小数部分 4 舍 5 入。
例如:
printf("%.0f %.0f ",123.5,123.4);
输出 124 123”

原因来源:https://blog.csdn.net/baiquanjiangyou/article/details/103204451#


更新于2023/10/21


某天又遇见一个需要将浮点数四舍五入的题,不过这次不能直接输出所以需要另寻方法。

直接使用强制转换:

假设     float a = 1.4 ,float b = 1.6,,float c = 2.0;

使用     int A =  (int) (a + 0.5) , int B = (int) (b + 0.5) , int C = (int) (c + 0.5);

就可以实现四舍五入使得 A = 1 ,B = 2 ,C = 2 

原理是浮点数强制转换为整型数时会省略掉小数点后面的数而取整


这是知识来源https://blog.csdn.net/qq_39200110/article/details/103661549

其中还包含 int 转换为 float 会发生舍入的情况

与 double 转换为 float 会发生溢出与舍入的情况

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值