Math。round,数值取整底层代码解析

Python取整函数全解析:int、floor、ceil、round与//的实战指南 在编程中,数值处理是基础且关键的一环,尤其是在涉及精度和业务规则的场景下。取整操作作为数值处理的核心概念,其本质是将浮点数转换为整数,但根据不同的数学定义和业务需求,存在多种实现方式。从原理上讲,取整主要遵循向零、向负无穷、向正无穷或四舍五入等不同规则,这直接决定了函数在不同输入(尤其是负数)下的行为差异。理解这些原理的技术价值在于,它能帮助开发者避免因取整方式选择不当而导致的隐蔽逻辑错误,例如在分页计算、财务对账或游戏坐标网格化中出现的数据偏差。在实际应用场景中,Python提供了`int()`、`mat 阅读详情

初始代码

import java.util.Scanner;

/**
 * 9:56
 * 近似值,输入数值取整输出,四舍五入
 */
public class Approximate_value_1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextDouble()) {
            double d = sc.nextDouble();
            System.out.println(Math.round(d));
        }
        System.out.println("a");
    }
}

math.round底层
返回与参数最接近的int ,并把四舍五入到正无穷大。
特别案例:
如果参数为NaN,则结果为0。
如果参数为负无穷大或任何小于或等于Integer.MIN_VALUE的值,则结果等于Integer.MIN_VALUE的值。
如果参数为正无穷大或任何大于或等于Integer.MAX_VALUE的值,则结果等于Integer.MAX_VALUE的值。
参数:
a –要四舍五入为整数的浮点值。
返回值:
参数的值四舍五入到最接近的int值。

public static int round(float a) {
//传入一个float型数a
        int intBits = Float.floatToRawIntBits(a);
        //传入数值取整
        int biasedExp = (intBits & FloatConsts.EXP_BIT_MASK)
                >> (FloatConsts.SIGNIFICAND_WIDTH - 1);
        int shift = (FloatConsts.SIGNIFICAND_WIDTH - 2
                + FloatConsts.EXP_BIAS) - biasedExp;
        if ((shift & -32) == 0) { // shift >= 0 && shift < 32
            // a is a finite number such that pow(2,-32) <= ulp(a) < 1
            int r = ((intBits & FloatConsts.SIGNIF_BIT_MASK)
                    | (FloatConsts.SIGNIF_BIT_MASK + 1));
            if (intBits < 0) {
                r = -r;
            }
            // In the comments below each Java expression evaluates to the value
            // the corresponding mathematical expression:
            // (r) evaluates to a / ulp(a)
            // (r >> shift) evaluates to floor(a * 2)
            // ((r >> shift) + 1) evaluates to floor((a + 1/2) * 2)
            // (((r >> shift) + 1) >> 1) evaluates to floor(a + 1/2)
            return ((r >> shift) + 1) >> 1;
        } else {
            // a is either
            // - a finite number with abs(a) < exp(2,FloatConsts.SIGNIFICAND_WIDTH-32) < 1/2
            // - a finite number with ulp(a) >= 1 and hence a is a mathematical integer
            // - an infinity or NaN
            return (int) a;
        }
    }
《数据分析岗笔试高频题:字节常用的SQL与AB测试考题解析》 • 核心考点:用RANK()/DENSE_RANK()/ROW_NUMBER()排序,SUM() OVER()计算累积值。◦ 用公式n=2*(Zα/2+Zβ)^2*σ²/δ²,取α=0.05,β=0.2,计算得每组需260人;◦ 关注字节技术公众号“字节跳动数据团队”,学习真实AB测试案例(如“推荐算法优化实验”)。• 题型分布:SQL编程题(40%)、AB测试方案设计(30%)、数据洞察题(30%);◦ 牛客网“字节跳动SQL真题”(如“统计用户7日留存”“广告投放ROI计算”)。 阅读详情

相关推荐

【锂离子电池力学耦合及相场法模拟技术与应用】

8. 电化学仿真软件的使用与案例分析 (1) 各向异性纳米线锂化应力分析(实例讲解1) (2) 化学反应及死锂现象研究(案例分析2)(3) 锂化循环损伤计算(案例分析3)6. 4. 电池材料的力学与电化学耦合性能分析(1) 耦合效应对电池性能的影响(2) 耦合模型的验证与应。5. 5. 电池颗粒、极片、电芯尺度力-电-化-热多场耦合模型概述力学-7. 颗粒尺度耦合模型在电池失效分析中的应用。2. 2. 电池电极材料的分类与特性。5. (2) 耦合模型的验证与应用。电化学耦合模型与仿真。

weixin_51101456的博客 524

JS中的Math对象与toFixed方法的底层原理

Math库和toFixed方法都是对JS中的数字(Number)类型进行操作的。

txl2498459886的博客 5478

手把手教你用GD32F407VET6的EXMC驱动外部SRAM,搞定大内存需求

本文详细介绍了如何使用GD32F407VET6的EXMC外设驱动外部SRAM,解决嵌入式开发中的大内存需求问题。通过硬件连接方案、EXMC时序配置与初始化步骤,以及软件集成与内存管理技巧,帮助开发者快速实现内存扩展。特别适合需要处理图形显示缓冲、音频处理等大内存场景的GD32F407开发者。

weixin_30752699的博客 346

Math工具类的ceil()、floor()、round()方法源码阅读

以double数据类型为例:0表示这个浮点数为正数1表示这个浮点数为负数计算一个double数值类型的数据data = (-1)^S * M * 2^E在计算机中存储时,阶码采用移码-1的方式存储,尾数只存储小数部分移码就是对补码的符号位进行取反。 Math.ceil(double)里面调用了StrictMath.ceil(double);Math.flooor(double)里面调用了StrictMath.floor(double)。在 StrictMath类中的ceil(double)和floor(do

qq_56460466的博客 856

✨使用 vLLM + Docker 部署 Qwen3-Embedding-8B 并实现高效文本向量生成(附 `curl` 测试)

本文介绍了如何使用 vLLM 和 Docker 部署 Qwen3-Embedding-8B 嵌入模型服务,并通过标准 OpenAI 兼容接口进行调用和结果解析。如果你在部署中遇到任何问题,欢迎留言讨论!

用大模型重构生活:猫奴程序员的AI智能日常记录 6240

无人机避障——4DMmvRadar三维点云坐标转换到无人机坐标系(三)

无人机避障——4DMmvRadar三维点云坐标转换到无人机坐标系(三)

weixin_45390670的博客 1869

数值对象Math与时间对象Date

数学对象,实践对象,window子对象

qq_35784654的博客 537

三菱PLC软件GX-Works2使用和循环左移指令实现流水灯程序

(2)方式2:双击打开全局软元件注释,软元件名称手动输入,如M辅助继电器输入M0、D寄存器输入D0,然后找到对应的寄存器输入自定义的功能名字即可。链接:https://pan.baidu.com/s/14ZaBIq4mBirIqfd9Ja3AiA。链接:https://pan.baidu.com/s/1nuQz1OgS8bmagPE8T-PBkQ。链接:https://pan.baidu.com/s/1oKGi_bdLN5HI4HYxSXEdlA。(1)方式1:将定义好变量功能的CSV文件导入即可。

panjinliang066333的博客 1万+

Math.round()方法

Math.round方法举例: Case1:小数点后第一位 = 5 正数:Math.round(11.5) = 12 负数:Math.round(-11.5) = -11 Case2:小数点后第一位 < 5 正数:Math.round(11.49) = 11 负数:Math.round(-11.49) = -1...

零落凉辰@的专栏 4万+

音频质量评估指标全解析:从主观到客观的全面指南

本文全面解析了音频质量评估的核心指标,涵盖主观评价(如MOS、DMOS)与客观评价(如PESQ、STOI、SDR)。重点介绍了DNSMOS等AI驱动的无参考评估方法,并提供了根据语音通信、噪声抑制、语音分离等不同场景选择指标组合的实战指南,帮助开发者和研究者科学量化音频质量。

rum55的博客 645

基于STM32的多模态智能风扇控制系统设计与实现

本文详细介绍了基于STM32单片机的多模态智能风扇控制系统的设计与实现。系统集成了红外遥控、蓝牙手机控制及人体感应等多模态交互方式,通过PWM技术实现无级调速,并设计了安全优先的控制逻辑。文章从硬件选型、核心原理、软件编程到系统调试,提供了完整的实战指南,适合嵌入式开发爱好者学习与实践。

weixin_28285943的博客 238

Java,Math类中的ceil、floor和round函数源码解析以及自己重写实现

1. ceil、floor和round的功能 首先,这三个方法都是Math类的静态方法,而且类Math在java.lang包下,所以我们在代码中可以直接调用Math的方法。 Math.ceil(double a)实现的是对小数向右取整,如 Math.ceil(-0.7) = -0.0,Math.ceil(0.5) = 1.0, Math.ceil(1.3) = 2.0 Math.floor(double a)实现的是对小数向左取整,如 Math.floor(-0.7) = -1.0,Math.floo

走过路过不要错过 3815

一文吃透 ABAP CDS SELECT:语法全景、关联与去重、可运行示例与实战心法

摘要: 本文深入解析ABAP中CDS视图的SELECT语法,重点介绍两种等价写法、关联与路径表达式优化、DISTINCT去重逻辑及WHERE/GROUP BY/HAVING/UNION等子句的应用。通过可运行的业务伙伴角色去重、关联路径查询及多角色筛选示例,演示如何将CDS特性转化为项目实践。强调关联复用性优于传统JOIN,并指出DISTINCT的权限边界与误用场景,帮助开发者从行式思维转向图式数据建模。(150字) 关键词: ABAP CDS、SELECT语法、路径表达式、DISTINCT去重、关联复用

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 393

Math.round()方法取整规则

刷题看到Math.round()题目,就知道又到了翻文档的时候了 返回最接近参数的 long。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 long 类型。换句话说,结果等于以下表达式的值: (long)Math.floor(a + 0.5d) 特殊情况如下: 如果参数为 NaN,那么结果为 0。 如果结果为负无穷大或任何小于等于 Long.MIN_VALUE...

西瓜那么甜 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python3 math.ceil()、math.floor()、//、int()、round()取整问题

Python3 math.ceil()、math.floor()、//、int()、round()取整问题 1. 向上取整:math.ceil(),往较大的方向取 import math math.ceil(2.1) 3 math.ceil(2.8) 3 math.ceil(-2.1) -2 math.ceil(-2.9) -2 2. 向下取整:math.floor(),往较小方...

wk的博客 4835

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java中Math.round()方法

最近我也在看一些书籍,发现了好多不知道的方法和用法,所以才给大家分享出来,顺便做一个小总结! 先介绍这个方法Math.round() Java中的Math.round()方法是将浮点型进行“四舍五入”转换为int类型的一个方法(不含小数点.0)! 但是它的“四舍五入”方式有点特别,区别于保留两位小数的四舍五入! 而Math.round()方法是在java.lang包下,所以我们也无需导包! 这...

奈何的人生 2万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

js中Math.floor、Math.ceil、Math.round和parseInt小数取整小结

向下的意思是往小的方向取,如Math.round(-8.6)先-8.6+0.5=-8.1,再向下取整得到-9)Math.floor(-1.5)  //返回-2。Math.floor(-5.8)  //返回-6。Math.round(-1.5)  //返回-1。Math.round(-5.8)  //返回-6。Math.ceil(-1.5)  //返回-1。Math.ceil(-5.8)  //返回-5。parseInt(-1.5)  //返回-1。parseInt(-5.8)  //返回-5。

weixin_61843526的博客 3350

Parseint()、Math.round()、Math.floor()、Math.ceil()四种取整方法的区别

parseInt() 该方法取整是把小数点后面小数去掉,只保留整数部分。parseInt作用: 1.函数可解析一个字符串,并返回一个整数。console.log(parseInt(19.11));//返回19 2.舍去小数点后的数字不进行四舍五入。 console.log(parseInt(19.99));//19 3.可以转换进制。 console.log(parseI...

weixin_44600235的博客 1696

Python取整——向上取整、向下取整、四舍五入取整、向0取整

废话少叙,直接上code: 首先,不得不提醒大家一个容易被忽视或者搞混的问题——一般的,0.5这种末尾是5的小数,四舍五入取整应进位。这个进位的意思是:-0.5 → -1;0.5 → 1.即正负情况不同,都向着远离0,使得绝对值更大的方向进位 向上取整:math.ceil() import math math.ceil(-0.5) &gt;&gt;&gt; 0 math.ceil(-...

谁谓荼苦,其甘如荠 36万+

Math.round()的四舍五入规则是加0.5向下取整

问:Math.round(15.5) 等于多少?Math.round(-15.5) 等于多少? 答:分别等于 16 和 -15。 因为四舍五入的原理是在参数上加 0.5 然后进行下取整。 所以类似的 Math.round(15.6) 计算方式为 15.6 + 0.5 = 16.1,接着向下取整数为 16;Math.round(-15.6) 计算方式为 -15.6 + 0.5 = -15.1,接着向...

熊仙森滴Blog 1万+

c#中取整函数Math.Ceiling,Math.Round和Math.Floor的区别

1. Math.Ceiling(),只要有小数就加1(小数部分不为0) 例如: Math.Ceiling(0.0) -> 0 Math.Ceiling(0.1) -> 1 Math.Ceiling(0.2) -> 1 Math.Ceiling(0.3) -> 1 Math.Ceiling(0.4) -> 1 Math.Ceiling(0.5) -> ...

qq_40784024的博客 1165

CANN ops-math Round 算子全解析:向偶数取整原理与 aclnn 两段式调用实战

Round 是 CANN ops-math 数学基础算子库中负责"舍入"功能的元素级算子,支持"向最近整数取整(距离相同时向偶数取整)"与"四舍入到指定位数"两种模式。本文以 [math/round/README.md](https://link.gitcode.com/i/c3d057974ff659ba901ed2dea2cf0158) 为主线,结合算子源码与测试,系统讲解 Round 的功能

gitblog_00110的博客 927

Java中Math.round()的取整规则

- 原题: Math.round(11.5) 等于多少?Math.round(-11.5)等于多少? - 答案 : Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。Math.round() 四舍五入的原理是在参数上加0.5然后进行下取整。 - 从文档中分析其原理: round方法: static long round(double a) 此方法返回的参数最接近的long. static int round(float a) 此方法返..

qq_37149892的博客 459

math.floor 、cell、round的用法

  Math.floor: floor: - - 地板 数学函数,返回double类,向下取整,求一个浮点数的天花板,就是求一个最接近它的整数。 例如: Math.cell(0.60) -- 0 Math.cell(0.48) -- 0 Math.cell: cell  - - 装天花板 数学函数,返回double类,向上取整,求一个浮点数的天花板,就是求一个最接近它的整数。...

Gray_humor的博客 4643

Python取整操作全解析:从int()、math.floor()到round()的实战避坑指南

在编程中,数值取整是数据处理的基础操作,其核心原理涉及向不同方向的舍入规则。理解取整的数学定义与计算机实现差异,对于保证计算精度、避免逻辑错误具有重要技术价值。尤其在金融计算、科学实验、游戏开发及传感器数据处理等对精度敏感的应用场景中,选错取整方式可能导致业务结果偏差。本文从开发者实战视角,深入剖析Python中`int()`向零截断、`math.floor()`向下取整、`math.ceil()`向上取整、`round()`银行家舍入法以及`//`地板除等方法的细微差别与适用场景,并针对`浮点数精度`问题

diaohuyi6830的博客 371

Math.round()解析

1.Math.round():根据“round”的字面意思“附近、周围”,可以猜测该函数是求一个附近的整数,看下面几个例子就明白。 小数点后第一位<5 正数:Math.round(11.46)=11 负数:Math.round(-11.46)=-11 小数点后第一位>5 正数:Math.round(11.68)=12 负数:Math.round(-11.68)=-12 小数点后第一位=5 正数:Math.round(11.5)=12 负数:Math.round(-11.5)=-11 总结:

aiaibaba的博客 4753
上一篇: 关于count=count++
下一篇: 2021-06-03pip报错 ValueError: Unable to find resource t64.exe in package pip._vendor.distlib
DrMaker
博客等级 码龄8年 17粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值