解决浮点运算精度不准确,BigDecimal 加减乘除
package com.kflh.boxApi.utils.util;
import java.math.BigDecimal;
/**
* @program: BoxApi
* @description: 计算浮点数
* @author: eterntiyz
* @create: 2019-01-17 11:10
*/
public class DoubleCalendar {
/**
* @Description: 浮点加法
* @Param: []
* @return: java.lang.Double
* @Author: tonyzhang
* @Date: 2019-01-17 11:27
*/
public static Double add(String str1,String str2) {
BigDecimal bignum1 = new BigDecimal(str1);
BigDecimal bignum2 = new BigDecimal(str2);
BigDecimal bignum3 = bignum1.add(bignum2);
return bignum3.doubleValue();
}
/**
* @Description: 浮点减法
* @Param: []
* @return: java.lang.Double
* @Author: tonyzhang
* @Date: 2019-01-17 11:27
*/
public static Double subtract(String str1,String str2) {
BigDecimal bignum1 = new BigDecimal(str1);
BigDecimal bignum2 = new BigDecimal(str2);
BigDecimal bignum3 = bignum1.subtract(bignum2);
return bignum3.doubleValue();
}
/**
* @Description: 浮点乘法
* @Param: str1为分母,str2为分子
* @return: java.lang.Double
* @Author: tonyzhang
* @Date: 2019-01-17 11:26
*/
public static Double multiply(String str1,String str2) {
BigDecimal bignum1 = new BigDecimal(str1);
BigDecimal bignum2 = new BigDecimal(str2);
BigDecimal bignum3 = bignum1.multiply(bignum2);
return bignum3.doubleValue();
}
/**
* @Description: 浮点除法
* @Param: []
* @return: java.lang.Double
* @Author: tonyzhang
* @Date: 2019-01-17 11:26
*/
public static Double divide(String str1,String str2) {
BigDecimal bignum1 = new BigDecimal(str1);
BigDecimal bignum2 = new BigDecimal(str2);
//参数意义.bignum1为分母,bignum2为分子,scale保留的位数,BigDecimal.ROUND_DOWN表示不进位
BigDecimal bignum3 = bignum1.divide(bignum2,2,BigDecimal.ROUND_DOWN);
return bignum3.doubleValue();
}
public static void main(String[] args) {
System.out.println(divide("4600.0","0.6"));
}
}
解决浮点运算精度不准确,BigDecimal 加减乘除的更多相关文章
- BigDecimal 解决double精度丢失问题(加减乘除)
package com.qcloud.component.publicservice.util; import java.math.BigDecimal; /** * 由于Java的简单类型不能够精确 ...
- 解决计算精度问题:BigDecimal
BigDecimal类 BigDecimal所在包:java.math,不可变的.任意精度的有符号十进制数.BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成 ...
- java用double和float进行小数计算精度不准确
java用double和float进行小数计算精度不准确 大多数情况下,使用double和float计算的结果是准确的,但是在一些精度要求很高的系统中或者已知的小数计算得到的结果会不准确,这种问题是非 ...
- BigDecimal加减乘除运算(转)
java.math.BigDecimal.BigDecimal一共有4个够造方法,让我先来看看其中的两种用法: 第一种:BigDecimal(double val) Translates a doub ...
- Java-从Double类型精度丢失认识BigDecimal
Java-从Double类型精度丢失认识BigDecimal 参考资料 https://www.jianshu.com/p/07e3eeb90f18 https://zh.wikipedia.org/ ...
- 金融项目java开发_BigDecimal(解决计算精度问题)
当使用double进行商业运算时,double计算会丢失精度.可以使用BigDecimal进行计算. import java.math.BigDecimal; import org.junit.Tes ...
- BigDecimal加减乘除及setScale的用法小结
Bigdecimal初始化: BigDecimal num = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失. BigDecimal num = new Big ...
- BigDecimal类(精度计算类)的加减乘除
BigDecimal类 对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数 ...
- js小数加减乘除时精度不准确
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_33237207/article/d ...
随机推荐
- Spring Security 学习笔记-登录认证过滤器
UsernamePasswordAuthenticationFilter用户登录验证过滤器,它继承自AbstractAuthenticationProcessingFilter. 登录处理url默认使 ...
- Python12_关于文件概念的讨论与序列化
文件是什么? 存储在一些设备上的信息的集合.一堆字节: ====================================================到底什么是二进制文件.和文本文件,它们有 ...
- Java面向对象程序设计第8章3-5
Java面向对象程序设计第8章3-5 3.String类型有什么特点? 一旦赋值,便不能更改其指向的字符对象 如果更改,则会指向一个新的字符对象 不能为null 4.String什么时候进行值比较,什 ...
- Visio高级应用部件
标注与公式的应用: 插入标注 怎么让标注与图形建立关联:拖动标注的时候坐下角会出现黄色的点 把标准拖动到形状边的时候让黄点进入形状就是建立了关联 然后标注就会随着形状的移动而移动 而且复制和删除也都是 ...
- 0016 CSS 背景:background
目标 理解 背景的作用 css背景图片和插入图片的区别 应用 通过css背景属性,给页面元素添加背景样式 能设置不同的背景图片位置 [插入图片,不用设置img元素的父元素.自身元素大小,即可见,但是背 ...
- Web基础了解版10-Filter-Listener
Filter 对于WEB应用来说,过滤器是一个驻留在服务器中的WEB组件,他可以截取客户端和WEB资源之间的请求和响应信息. 在一个WEB应用中可以部署多个过滤器,多个过滤器就组成了一个过滤器链,请求 ...
- The sixth day of Crawler learning
爬取我爱竞赛网的大量数据 首先获取每一种比赛信息的分类链接 def get_type_url(url): web_data = requests.get(web_url) soup = B ...
- 002 ceph的deploy部署
介绍:前期对ceph有一个简单的介绍,但是内容太大,并不具体,接下来使用ceph-deploy部署一个Ceph集群,并做一些运维管理工作,深入的理解Ceph原理及工作工程! 一.环境准备 本次使用的虚 ...
- Java 从入门到进阶之路(二十)
在之前的文章我们介绍了一下 Java 中的包装类,本章我们来看一下 Java 中的日期操作. 在我们日常编程中,日期使我们非常常用的一个操作,比如读写日期,输出日志等,那接下来我们就看一下 Java ...
- spring之第一个spring程序
spring具体描述: 轻量级 IOC:依赖注入 AOP:面向切片编程 容器:spring是一个容器,包含并且管理应用的生命周期 框架 一站式 一.搭建spring开发环境 在eclipse中新建一个 ...