计算机四舍五入的规则原来是这样的!

C语言中浮点数四舍五入的规则到底是怎样的呢?
下面用一个案例告诉大家,相信你就可以明白了。

描述

将浮点数转换为整数类型,要求四舍五入。

输入描述:

随机输入的浮点数

输出描述:

四舍五入之后的整数

示例1

输入:14.99
输出:15

示例2

输入:-2.5
输出:-3

下面列举两种方法。

方法1:

思路分析:

1.定义一个浮点型变量存放输入的小数
2.要将输入的小数四舍五入后输出,那么首先就要有输入,我们用scanf()接收输入,占位符要使用浮点数相对应的占位符
3.可以选择用printf()控制格式保留小数点后0位来输出四舍五入后的结果

代码实现:

#include <stdio.h>
int main()
{
	float x = 0.0;

	scanf("%f", &x);

	printf("%0.0f\n", x);//输出最小宽度为0,小数点后0位

	return 0;
}

运行结果:

image.png

上述方法在输入2.5时,得到四舍五入的结果却是2,那这是为什么呢?其实,在C语言中用printf()的格式控制浮点数的四舍五入的规则是:
1.若输入数的,小数部分>5,则“入”;
2.若输入数的,小数部分<5,则“舍”;
3.若输入数的,小数部分=5,则判断整数部分的奇偶,整数部分为奇数:“入”,整数部分为偶数:“舍”;

也就是说上述的方法是存在不符合数学中的四舍五入的情况的,若果想要完全符合数学中的四舍五入,那么就不得不考虑使用其他的方法了,例如下面的方法2。

方法2:

思路分析:

1.定义一个浮点型的变量存放输入的小数
2.定义一个整型变量,用于存放所输入数的整数部分
3.如果输入的数 - 0.5 >= 所输入数的整数部分,则应该“入”,否则“舍”
4.当然,还应该分为输入的数大于0和小于0两种情况

代码实现:

#include <stdio.h>
int main()
{
	float x = 0;

	scanf("%f", &x);//输入一个小数

	if (x > 0)
	{
		int a = (int)x;//存放所输入数的整数部分

		if (x - 0.5 >= a)
		{
			printf("%d\n", a + 1);//“入”
		}
		else
		{
			printf("%d\n", a);//“舍”
		}
	}

	if (x < 0)
	{
		int a = (int)x;//存放所输入数的整数部分

		if (x + 0.5 <= a)
		{
			printf("%d\n", a - 1);//“入”
		}
		else
		{
			printf("%d\n", a);//“舍”
		}
	}

	return 0;
}

运行结果:

image.png

至此本文就结束了,如果你还有其他的更好、更加简洁的方法的话,欢迎留言评论!
希望对你有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值