java.math包下计算浮点数和整数的类

(1)BigIntege:实现任意精度的整数运算。
(2)BigDecimal:实现任意精度的浮点运算。

例如:

使用BigDecimal进行浮点数比较

import java.math.BigDecimal;

public class HelloWorld{
    public static void main(String[] args){

        BigDecimal a=BigDecimal.valueOf(1.0);

        a=a.subtract(BigDecimal.valueOf(0.1));    //subtract:减去
        a=a.subtract(BigDecimal.valueOf(0.1));
        a=a.subtract(BigDecimal.valueOf(0.1));
        a=a.subtract(BigDecimal.valueOf(0.1));
        a=a.subtract(BigDecimal.valueOf(0.1));

        System.out.println(a);    //输出:0.5

        System.out.println(1.0-0.1-0.1-0.1-0.1-0.1);    //输出:0.5000000000000001

        BigDecimal b=BigDecimal.valueOf(0.1);
        BigDecimal c=BigDecimal.valueOf(1.0/10.0);

        System.out.println(b==c);    //false

        System.out.println(b.equals(c));    //true
    }
}

原文地址:https://www.cnblogs.com/wangwenchao/p/12359473.html

时间: 2024-10-31 11:08:32

java.math包下计算浮点数和整数的类的相关文章

java中商业数据计算时用到的类BigDecimal和DecimalFormat

1.引言 借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的.然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合.但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦. 2.BigDecimal简介 BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale) 组成.如果为零或正数

Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介

Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- Android包 : android.net 包 (1接口, 19类, 3枚举, 1异常), android.net.http 包 (6类), android.net.nsd 包 (3接口, 2类), android.net.rtp (4类), android.net.sip 包 (1接口, 9类, 1

JAVA math包

Math类: java.lang.Math 类中包含基本的数字操作,如指数.对数.平方根和三角函数. java.math是一个包,提供用于执行任意精度整数(BigInteger)算法和任意精度小数(BigDecimal)算法的类. java.lang.Math 类中包含E和PI两个静态常量,以及进行科学计算的类(static)方法,可以直接通过类名调用. public static final Double E = 2.7182818284590452354 public static fina

java获取包下被指定注解的类

方案一: 采用reflections 框架(此框架依赖com.google.guava) 1.reflections框架地址:https://github.com/ronmamo/reflections 2.项目依赖 <dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>0.9.11</versi

1编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果。2编写一个Java项目,定义包,在包下定义包含main方法的类。

关于java.util包下的Random类

1.功能:此类的实例用于生成伪随机数流 2.方法(Random的方法有很多,在此只解释说明我认为比较常用的几个方法) (1)next(int bits):生成下一个伪随机数 (2)nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的.在 0.0(包括) 和 1.0(不包括) 之间均匀分布的 double 值. (3)nextFloat():返回下一个伪随机数,它是取自此随机数生成器序列的.在0.0(包括) 和 1.0(包括) 之间均匀分布的 float 值. (4)next

如何正确地在Spring Data JPA和Jackson中用上Java 8的时间相关API(即JSR 310也即java.time包下的众神器)

用过的肯定知道,JSR310的时间API真的是神器,极大的方便了在Java中对时间操作的过程. JSR 310规范领导者Stephen Colebourne就是joda-time作者,其主要思想也是借鉴了joda-time,而不是直接把joda-time移植到Java平台中,API是类似的,但做了改进,具体的改进请参考其2009年的一篇文章和InfoQ对他的采访: http://blog.joda.org/2009/11/why-jsr-310-isn-joda-time_4941.html h

?Java基础学习——java.lang包下 Class

Class 类的实例表示正在运行的 Java 应用程序中的类或接口.在 Java 中,每个 Class 都有一个相应的 Class 对象,即每一个类,在生成的.class文件中,就会产生一个 Class 对象,用于表示这个类的类型信息.我们获取 Class 实例有几种方法: 例子:1.String objString = new String();Class objClass;objClass = objString.getClass(); 2. objClass = Interger.clas

Java jdk源代码的Math包

jdk源码学习java.math包 阅读JDK源代码java.math中的 java.math.BigDecimal java.math.BigInteger java.math.BitSieve java.math.MathContext java.math.MutableBigInteger java.math.RoundingMode java.math.SignedMutableBigInteger 1.java.math.BigDecimal 不可变的.任意精度的有符号十进制数.Big