精确使用浮点数
Posted mianyang0902
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了精确使用浮点数相关的知识,希望对你有一定的参考价值。
在计算机中所有的数字都是使用二进制进行存储的,而二进制无法精确地表示所有的小数,所以使用基本数据类型进行计算时会有误差。
加法声明:public BigDecimal add(BigDecimal m);
减法声明:public BigDecimal subtracct(BigDecimal m);
乘法声明:public BigDecimal multiply(BigDecimal m);
除法声明:public BigDecimal divide(BigDecimal m)。
1 public class Yihuo { 2 3 public static void main(String []args) { 4 double a=2; 5 double b=1.1; 6 double c=a-b; 7 System.out.println("计算结果为"); 8 System.out.println(c); 9 BigDecimal m=new BigDecimal("2"); 10 BigDecimal n=new BigDecimal("1.1"); 11 BigDecimal k=m.subtract(n); 12 BigDecimal p=m.add(n); 13 BigDecimal q=m.multiply(n); 14 System.out.println("精确计算"); 15 System.out.println("减法"); 16 System.out.println(k); 17 System.out.println("加法"); 18 System.out.println(p); 19 System.out.println("乘法"); 20 System.out.println(q);21 }}
本例中用除法报错:Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.base/java.math.BigDecimal.divide(BigDecimal.java:1716)
at Zhen/Hao.Yihuo.main(Yihuo.java:17)
(注意: 这里m为运算操作数)
特别注意用除法时,当除不尽时会报错。
以上是关于精确使用浮点数的主要内容,如果未能解决你的问题,请参考以下文章
Java中的简单浮点数类型float和double不能够进行精确运算