/ 学习笔记 / 21浏览

牛客网 | HJ7 | 取近似值 | C

文章目录
  • 题目
  • 解题
  • 知识点
  • 题目

    链接

    取近似值_牛客题霸_牛客网 (nowcoder.com)

    描述

    写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 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. 取出浮点数的小数部分

    通过类型转换,可以取出一个浮点数的整数部分,从而得到小数部分。

    Linux系统用户最小化检测方法
    企业采购模式扫盲
    安卓APP渗透基础 —— APK安装包的签名机制
    安卓APP渗透基础 —— 四大组件暴露测试
    安卓APP渗透基础 —— APK文件结构
    《CCNA认证指南》“IP地址”知识点整理

    0

    1. This post has no comment yet

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注