java不四舍五入_JAVA-四舍五入之坑
四舍五入:四舍五入是一种精确度的计数保留法,与其他方法本质相同。但特殊之处在于,采用四舍五入,能使被保留部分的与实际值差值不超过最后一位数量级的二分之一:假如0~9等概率出现的话,对大量的被保留数据,这种保留法的误差总和是最小的。这也是我们使用这种方法为基本保留法的原因。
一、数学上的四舍五入举几个例子:
1.3 => 1
1.5 => 2
-1.3 => -1
-1.5 => -2
二、计算机中的四舍五入PHP语言:跟数学上的四舍五入一样。
Java语言:
Math.round(-11.5) = -11【为什么呢???】
tips:看了一下java底层代码。直接上代码( 复习:>>运算符的意义。以下代码主要看 return ((r >> shift) + 1) >> 1的解释)public static long round(double a) {
long longBits = Double.doubleToRawLongBits(a);//获取浮点位数 -2147483648
long biasedExp = (longBits & DoubleConsts.EXP_BIT_MASK)
>> (DoubleConsts.SIGNIFICAND_WIDTH - 1);
long shift = (DoubleConsts.SIGNIFICAND_WIDTH - 2
+ DoubleConsts.EXP_BIAS) - biasedExp;
if ((shift & -64) == 0) { // shift >= 0 && shift < 64
// a is a finite number such that pow(2,-64) <= ulp(a) < 1
long r = ((longBits & DoubleConsts.SIGNIF_BIT_MASK)
| (DoubleConsts.SIGNIF_BIT_MASK + 1));
if (longBits < 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;//注意这里,是右移shift 向小方向取整 再加1(相当于向大方向取整)。再右移向小方向取整(这一步相当于>>>1)。
} else {
// a is either
// - a finite number with abs(a) < exp(2,DoubleConsts.SIGNIFICAND_WIDTH-64) < 1/2
// - a finite number with ulp(a) >= 1 and hence a is a mathematical integer
// - an infinity or NaN
return (long) a;
}
}
java不四舍五入_JAVA-四舍五入之坑相关推荐
- 在java里四舍五入怎么做_利用java怎么实现一个四舍五入功能
利用java怎么实现一个四舍五入功能 发布时间:2020-12-02 16:46:08 来源:亿速云 阅读:68 作者:Leah 这期内容当中小编将会给大家带来有关利用java怎么实现一个四舍五入功能 ...
- java joinpoint教程_Java的教程
Java编程语言 Java编程语言中,左侧的导航栏(Java编程语言),可以快速定位文章的内容.这篇文章主要汇总以下: Java编程语言学习:Java的概述,Java的基础,Java面向对象的概念,J ...
- java 小坑_关于Java子父类关系的小坑
原标题:关于Java子父类关系的小坑 学过JavaSE的都知道java类在初始化的时候,如果存在直接父类,是先初始化父类,然后才初始化子类. 子类拥有父类所有的非私有化成员,非私有的成员不仅仅包括pu ...
- 用java的io做一个代码计数器,如何制作Java页面计数器_java
大庆采油六厂采油工艺研究所 王兵 王波 常常逛WWW的人,一定对许多起始页上的计数器感兴趣.每当你光临某个站点的起始页时,它的计数器就很亲切地告诉你,从某年某月某日开始,你是第几位光临的人.你可能也想 ...
- php怎么四舍五入,php 四舍五入的三种实现方法
这篇文章主要为大家详细介绍了php 四舍五入的三种实现方法,具有一定的参考价值,可以用来参考一下. 对php 四舍五入的三种方法感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! php 四 ...
- java zip malformed_关于Java解压文件的一些坑及经验分享(MALFORMED异常)
关于Java解压文件的一些坑及经验分享 就在本周, 测试人员找到我说现上的需求文档(zip格式的)无法预览了, 让我帮忙看看怎么回事. 这个功能也并不是我做的, 于是我便先看看线上日志有没有什么错误, ...
- matlab中将小数四舍五入,matlab 四舍五入 保留至指定小数(图)
matlab 四舍五入 保留至指定小数(图) 07-23栏目:技术 TAG:matlab四舍五入 matlab四舍五入 https://www.jhua.orgcopyright jhua.org转载 ...
- 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目
课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...
- 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发
今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...
- php 四舍五入,php四舍五入 js四舍五入方法 | 帮助信息-动天数据
php四舍五入 js四舍五入方法 作者:dthost | 时间:2017-12-16 | 分类:未分类 | 6,286 次阅读 四舍五入是一种精确度的计数保留法,与其他方法本质相同.特殊之处在于,采用 ...
最新文章
- OQPSK:Offset Quadrature Phase Shift Keying偏移正交相移键控的MATLAB仿真/FPGA实现
- 使用JMH做Java微基准测试
- 使用 mono 编译 .NET Standard 应用
- mysql loose_简单谈谈MySQL的loose index scan
- 【ARM-Linux开发】Wi-Fi 应用工具wpa_supplicant
- MySQL迁移至MariaDB
- IT餐馆—第四回 离职
- Data Lake Analytics: 基于OSS文件自动推断建表
- Gym 100733G 	No Negations
- day1 java基础回顾-	文件路径
- 【2017级面向对象程序设计寒假作业】第4次作业情况
- 如何查看VS命令行选项,并使用命令卸载VS
- excel密码破解软件Excel Password Unlocker下载和使用技巧(亲测有效!)
- 遭遇Excel的宏病毒
- window下xmind-pro-8破解版
- python下拉菜单无限营销工作室_Python生成流水线《无限拍卖》文字!
- 苹果订阅服务器端开发
- 数据分析与数据挖掘实战案例本地房价预测(716):
- JQuery__Tab实践
- Camtasia Studio2023mac电脑最新屏幕录制编辑工具
热门文章
- iis布置asp.net网站——服务应用程序不可用
- C++语言标准库functional中的函数对象,绝对是装B神器~
- 胡润2019中国人工智能企业百强榜:北京55家居首
- 计算机视觉,图像处理,图像分析,机器人视觉和机器视觉是彼此紧密关联的学科
- Docker容器运行后退出,怎么才能一直运行?
- 网易笔试题——计算机视觉_深度学习方向
- 中国工程院2019年院士增选第二轮候选人名单公布 李彦宏落选
- 入门机器学习,看这些材料就够了
- 3d饼图 vue_Vue+Echarts构建可视化大数据平台实战项目分享(附源码)(上)
- 画原理图和PCB图该注意什么?