BigDecimal用法 及其如何解决java数据精确计算
来源:互联网 发布:端口不通怎么办 编辑:程序博客网 时间:2024/06/15 21:54
BigDecimal用法 及其如何解决java数据精确算法
一 传统的算法
public class BigDecimalDemo { public static void main(String[] args) { System.out.println(0.09 + 0.01); System.out.println(1.0 - 0.32); System.out.println(1.015 * 100); System.out.println(1.301 / 100); System.out.println(5/4); System.out.println(1.0 - 0.12); }}
==输出结果==
0.099999999999999990.6799999999999999101.499999999999990.01300999999999999910.88
二 BigDecimal 用法
/* * 看程序写结果:结果和我们想的有一点点不一样,这是因为float类型的数据存储和整数不一样导致的。它们大部分的时候,都是带有有效数字位。 * * 由于在运算的时候,float类型和double很容易丢失精度,演示案例。所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal * * BigDecimal类:不可变的、任意精度的有符号十进制数,可以解决数据丢失问题。 *//* * 构造方法: * public BigDecimal(String val) * * public BigDecimal add(BigDecimal augend) * public BigDecimal subtract(BigDecimal subtrahend) * public BigDecimal multiply(BigDecimal multiplicand) * public BigDecimal divide(BigDecimal divisor) * public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):商,几位小数,如何舍取 */public class BigDecimalDemo { public static void main(String[] args) { // System.out.println(0.09 + 0.01); // System.out.println(1.0 - 0.32); // System.out.println(1.015 * 100); // System.out.println(1.301 / 100); BigDecimal bd1 = new BigDecimal("0.09"); BigDecimal bd2 = new BigDecimal("0.01"); System.out.println("add:" + bd1.add(bd2)); System.out.println("-------------------"); BigDecimal bd3 = new BigDecimal("1.0"); BigDecimal bd4 = new BigDecimal("0.32"); System.out.println("subtract:" + bd3.subtract(bd4)); System.out.println("-------------------"); BigDecimal bd5 = new BigDecimal("1.015"); BigDecimal bd6 = new BigDecimal("100"); System.out.println("multiply:" + bd5.multiply(bd6)); System.out.println("-------------------"); BigDecimal bd7 = new BigDecimal("1.301"); BigDecimal bd8 = new BigDecimal("100"); System.out.println("divide:" + bd7.divide(bd8)); System.out.println("divide:" + bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP)); // 参数说明 第二参数代表小数点后留几位 最后以为代表 采用的方式(四舍五入的方法) System.out.println("divide:" + bd7.divide(bd8, 8, BigDecimal.ROUND_HALF_UP)); }}
==输出结果==
add:0.10-------------------subtract:0.68-------------------multiply:101.500-------------------divide:0.01301divide:0.013divide:0.01301000
阅读全文
0 0
- BigDecimal用法 及其如何解决java数据精确计算
- Java 浮点数精确计算 BigDecimal的用法
- Java 浮点数精确计算 BigDecimal的用法
- Java使用BigDecimal解决精确计算的问题
- Java精确计算:BigDecimal类
- Java中的BigDecimal类进行精确计算
- Java 使用BigDecimal实现精确计算
- Java使用BigDecimal进行精确计算
- 计算金额 财务计算 精确运算 BigDecimal用法详解
- 运用BigDecimal精确计算
- 精确计算和BigDecimal
- 运用BigDecimal精确计算
- BigDecimal 精确计算
- BigDecimal精确计算
- 精确计算BigDecimal
- 精确计算_double,BigDecimal
- BigDecimal的精确计算
- BigDecimal精确计算
- 多线程问题总结
- MSSQL:VB连接数据库更清晰的写法
- Android平台利用OkHttp3模拟登录实现教务平台
- Lazy Analytics Let Other Queries Do the Work For You 懒惰分析:让其他查询语句为你工作
- ngnix_tomcat集群
- BigDecimal用法 及其如何解决java数据精确计算
- [JZOJ3767]【BJOI2014】路径
- Vim 文本对象指南 (1)
- Linux监控工具vmstat命令详解
- android makefile学习笔记
- C语言电子词典的实现
- 使用networkx计算网络的介数中心性
- java中常用4种排序方法
- spring的定时任务