华为机试每日一练--第八题: 取近似值

目录

问题描述

输入描述:

输出描述:

解题分析

代码实现


练习题入口

问题描述

写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.5 ,向上取整;小于 0.5 ,则向下取整。

数据范围:保证输入的数字在 32 位浮点数范围内

输入描述:

输入一个正浮点数值

输出描述:

输出该数值的近似整数值

解题分析

本题涉及到一个知识点,当一个浮点型数据赋值给整型数据时,只能把整数部分赋值给整型数据。

如:flaot a=3.15;  int b = a;   这时b = 3

所以我们判断小数点部分后的数就好判断了,直接用if语句判断(a-b)是否大于0.5,大于就打印(b+1),小于就打印(b)。

但是上述转化成代码的话,就显得太冗余了,毕竟这么简单的题目没必要这这么行。

接下来我给大家介绍两个简单方法

1、直接打印(a+0.5)

因为当小数大于0.5时,整数就+1、小于0.5时,就舍去小数。我们可以直接把浮点数a加上0.5,再转转化成整型。这样就筛选大于0.5的小数

printf("%d", (int)(a + 0.5));

2、round库函数

round()函数math标头的库函数,用于对最接近该数字的给定值进行四舍五入,一半的情况下舍入为零,它接受一个数字并返回四舍五入的值。

printf("%.0f\n", round(a));

代码实现

#include<stdio.h>
#include<math.h>

int main()
{
	float num;
	scanf("%f", &num);

	printf("%d", (int)(num + 0.5));
    printf("%.0f\n", round(num));
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱躺平的威威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值