当前位置: 首页 > news >正文

浮点数截断法:四舍五入的精确模拟

理论解释:

1. 目标

假设 a = 3.14159,我们想四舍五入到 小数点后两位(即 3.143.15)。

2. 步骤拆解

     (1) a * 100

  • a 放大 100 倍,让小数点后两位变成整数部分:
  • 3.14159 * 100 = 314.159

    (2) + 0.5

  • 关键步骤:如果小数部分 ≥ 0.5,则整数部分 +1
  • 314.159 + 0.5 = 314.659
  • 如果原数是 3.146(即 314.6),则:

  • 314.6 + 0.5 = 315.1

    (3) (int) 强制截断

  • 强制转换为 int丢弃小数部分(不是四舍五入,而是直接截断):
  • (int)314.659 = 314
    (int)315.1 = 315

    这样:

  • 314.159 → 314(因为 0.659 < 1,相当于 3.14159 舍去)
  • 314.6 → 315(因为 0.1 < 1,但整数部分已经是 315,相当于 3.146 进位)

     (4) / 100.0

  • 最后缩小 100 倍,恢复原来的数量级:
  • ​314 / 100.0 = 3.14
    315 / 100.0 = 3.15

    3. 为什么能保证精确?

  • 浮点数存储可能不精确(如 3.145 可能存储为 3.144999999...),直接用 %.2f 可能会错误舍入。
  • (int)(x + 0.5) 是经典的“四舍五入”方法,不依赖浮点数的内部表示,而是利用整数截断特性,确保:
  • 小数部分 ≥ 0.5 → 进位
  • 小数部分 < 0.5 → 舍去

例题:

代码如下:

错误示例

(1)

(2)

(3)

正确代码:

http://www.dtcms.com/a/194896.html

相关文章:

  • 【ARM】MDK如何将变量存储到指定内存地址
  • springCloud/Alibaba常用中间件之Seata分布式事务
  • Seata源码—4.全局事务拦截与开启事务处理一
  • Armijo rule
  • AI:初识NLP
  • Java 并发编程归纳总结(可重入锁 | JMM | synchronized 实现原理)
  • Jetson Orin Nano - 命令刷机笔记
  • GEE计算 RSEI(遥感生态指数)
  • MYSQL创建索引的原则
  • 【Spring Boot后端组件】mybatis-plus使用
  • Python炫酷星空
  • 使用Python调用DeepSeek的示例
  • 【项目】自主实现HTTP服务器:从Socket到CGI全流程解析
  • 报表控件stimulsoft教程:如何在报表和仪表板中创建热图
  • AQS 基本思想与源码分析
  • 【论信息系统项目的整合管理】
  • [基础] HPOP、SGP4与SDP4轨道传播模型深度解析与对比
  • 后端框架(3):Spring(2)
  • Oracle 批量操作脚本解析:动态执行与分批次删除
  • 项目班——0513——短信验证
  • 适合学校使用的桌面信息看板,具有倒计时、桌面时钟、课程表、天气预报、自动新闻联播、定时关机、消息通知栏、随机点名等功能。
  • PPT 转高精度 PDF API 接口
  • Spring循环依赖详解
  • Qt控件:交互控件
  • 分布式锁: Redisson 实现分布式锁的原理与技术细节
  • Transformer网络结构
  • 大数据技术的主要方向及其应用详解
  • 一台入网的电脑有6要素, 机器名,mac,ip,俺码,网关,dns,分别有什么作用
  • 【人工智能】大模型的成长日记:从训练到应用的全面蜕变
  • 经典案例 | 筑基与跃升:解码制造企业产供销协同难题