牛客网 | HJ7 | 取近似值 | C
编辑
19
2023-11-08
题目
链接
描述
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.5 , 向上取整;小于 0.5 ,则向下取整。
数据范围:保证输入的数字在 32 位浮点数范围内
输入描述:
输入一个正浮点数值
输出描述:
输出该数值的近似整数值
示例 1
输入:5.5
输出:6
说明:0.5>=0.5,所以 5.5 需要向上取整为 6
示例 2
输入:2.499
输出:2
说明:0.499<0.5,2.499 向下取整为 2
解题
输入的数据范围是正的32位浮点数,可以用int
保存最后的结果。
#include <stdio.h>
int main() {
float input;
scanf("%f", &input);
// 判断小数部分是大于等于0.5还是小于0.5
// 通过类型转换取得整数部分,浮点数减去整数部分得到小数部分
int result = (input - (int)input) >= 0.5 ? (int)input+1 : (int)input;
printf("%d\n", result); return 0;
}
知识点
1. 商运算符号
求商运算不会自动四舍五入,只会舍。
2. 浮点数
一个32位浮点数由三部分组成:
1位符号位
8位表示指数部分
23位表示尾数部分
符号位用以标明浮点数的正负,指数部分用以标识浮点数的整数,尾数部分用于标识浮点数的尾数。
以浮点数0.15625的表示法为例,其二进制表示法为:
0011 \ 1110 \ 0010 \ 0000 \ 0000 \ 0000 \ 0000 \ 0000
存储方式如下图:
3. 取出浮点数的小数部分
通过类型转换,可以取出一个浮点数的整数部分,从而得到小数部分。
- 0
- 0
-
分享