Java大浮点数精度
BigDecimal
精度问题
BigDecimal舍入模式
ROUND_DOWN 向零舍入。 即1.55 变为 1.5 , -1.55 变为-1.5
ROUND_UP 向远离0的方向舍入 即 1.55 变为 1.6 , -1.55 变为-1.6
ROUND_CEILING 向正无穷舍入. 即 1.55 变为 1.6 , -1.55 变为 -1.5
ROUND_FLOOR 向负无穷舍入. 即 1.55 变为 1.5 , -1.55 变为 -1.6
ROUND_HALF_UP 四舍五入 即1.55 变为1.6, -1.55变为-1.6
ROUND_HALF_DOWN 五舍六入 即 1.55 变为 1.5, -1.5变为-1.5
ROUND_HALF_EVEN 如果舍入前一位的数字为偶数,则采用HALF_DOWN奇数则采用HALF_UP 如1.55 采用HALF_UP 1.45采用HALF_DOWN
ROUND_UNNECESSARY 有精确的位数时,不需要舍入
BigDecimal在进行运算时也可以进行舍入
例如除法divide(BigDecimal divisor, int scale, RoundingMode roundingMode)返回一个BigDecimal,其值为 (this / divisor) ,其小数位数为scale。
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal d1 = new BigDecimal("3.1415926535");
BigDecimal d2 = new BigDecimal("2.7182818284");
BigDecimal d3 = d1.divide(d2, 10, BigDecimal.ROUND_UP);
System.out.println(3.1415926535 / 2.7182818284);
System.out.println(d3);
}
}
输出
1.155727349782993
1.1557273498
Java大浮点数精度的更多相关文章
- 计算价格, java中浮点数精度丢失的解决方案
计算价格, java中浮点数精度丢失的解决方案
- java float double精度为什么会丢失?浅谈java的浮点数精度问题 【转】
由于对float或double 的使用不当,可能会出现精度丢失的问题.问题大概情况可以通过如下代码理解: public class FloatDoubleTest { public static vo ...
- java浮点数精度问题解决方法
基础知识回顾: BigDecimal.setScale()方法用于格式化小数点setScale(1)表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOW ...
- Java 浮点数精度丢失
Java 浮点数精度丢失 问题引入 昨天帮室友写一个模拟发红包抢红包的程序时,对金额统一使用的 double 来建模,结果发现在实际运行时程序的结果在数值上总是有细微的误差,程序运行的截图: 输入依次 ...
- java中浮点数的比较(double, float)(转)
问题的提出:如果我们编译运行下面这个程序会看到什么? public static void main(String args[]){ System.out.println(0.05+0.01); Sy ...
- Java 大数值类型执行精确计算
简介 如果基本的整数和浮点数精度不能够满足需求,那么可以使用 java.math 包下两个很有用的类:BigInteger 和 BigDecimal.这两个类可以处理包含任意长度数字序列的数值,Big ...
- Java之浮点数运算
浮点数运算和整数运算相比,只能进行加减乘除这些数值运算,不能做位运算和移位运算. 在计算机中,浮点数虽然表示的范围很大,但是浮点数有个非常重要的特点,就是浮点数常常无法精确表示 举例 浮点数0.1在计 ...
- Python之☞float浮点数精度问题
Python的浮点数损失精度问题(转) 一个简单的面试题: >>>0.1+0.1+0.1 0.2 >>>0.1+0.1+0.1 0.3000000000000000 ...
- Python numpy 浮点数精度问题
Python numpy 浮点数精度问题 在复现FP(fictitious play, Iterative solution of games by fictitious play-page393)算 ...
随机推荐
- mysql 查询a表在b表中不存在的记录
select * from tbl_user a where(select count(1) as cnt from tbl_order b where a.phone=b.phone)=0
- Oauth2 初步
搭建一个最简单的 Oauth2 认证服务 基于 Springboot2,在 pom.xml 中引入 Oauth2: 123456789101112 <dependency> <gro ...
- 吴裕雄--天生自然C语言开发:存储类
{ int mount; auto int month; } { register int miles; } #include <stdio.h> /* 函数声明 */ void func ...
- 管理Exchange Online用户介绍(一)
一.管理收件人 1.在“Office 365管理中心”主页,依次选择用户->添加用户 2.输入相关信息,其中包括名称.用户名.电子邮件地址等信息. 二.Exchange Online对用户邮箱的 ...
- Spring Boot: Jdbc javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
jdbc:mysql://127.0.0.1:3306/xxx?useSSL=false 在后面添加?useSSL=false即可 参考网站
- [LC] 203. Remove Linked List Elements
Remove all elements from a linked list of integers that have value val. Example: Input: 1->2-> ...
- [Machine Learning] Andrew Ng on Coursera (Week 1)
Week 1 的内容主要有: 机器学习的定义 监督式学习和无监督式学习 线性回归和成本函数 梯度下降算法 线性代数回归 主要是了解一下机器学习的基本概念,重点是学习线性回归模型,以及对应的成本函数和梯 ...
- verilog的function使用
语法: function [range] function_id; input_declaration other_declarations procedural_statement ...
- Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.buding.system.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
前几天整体看了一下SpringBoot的简介,觉得看不如自己动手做,于是动手做一个简单的用户管理.启动的时候遇到了Skipping MapperFactoryBean with name 'sysUs ...
- 如何模拟ip
展开全部回答查看 https://segmentfault.com/q/1010000002990136 模拟国外ip https://gtmetrix.com/ 登录后才可以切换模拟的地区