ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

零基础java自学流程-Java语言进阶72

2021-10-19 16:02:34  阅读:199  来源: 互联网

标签:java BigDecimal valueOf System 72 new println Java String


想要系统学习JAVA推荐JAVA300集
Java300集零基础适合初学者视频教程←点击


 Java中BigDecimal类的介绍和用法  

Java提供了具有大数(大于16位)的操作类,即Java .math. bininteger类和Java .math. bigdecimal类,用于高精度计算。  

BigInteger类是一个处理大整数的类,而BigDecimal类是一个处理大数字和小数字的类。  

BigDecimal类的实现使用了BigInteger类,只不过BigDecimal添加了小数的概念。  

浮点数和双精度数只能用于科学或工程计算; 在需要数字精度的商业计算中,必须使用BigInteger和BigDecimal类,它们支持任意精度的定点数,可以用来精确计算货币值。  

BigDecimal类创建的对象不能直接使用传统的+、-、*、/算术运算符进行数学计算,但必须调用它们相应的方法。 方法参数也必须是BigDecimal类型的对象。  

一、构造BigDecimal 对象常用方法

  1、方法一

BigDecimal BigDecimal(double d); //不允许使用

  2、方法二

BigDecimal BigDecimal(String s); //常用,推荐使用

  3、方法三

static BigDecimal valueOf(double d); //常用,推荐使用

注意:  

1.  双构造函数不允许使用!!!! 因为它没有得到准确的值,它会变大;  

2.  String构造函数是完全可以预测的:写入new BigDecimal("0.1")将创建一个BigDecimal,它完全等于预期的0.1; 因此,通常建议优先使用String构造函数;  

3. 静态方法valueOf(double val)内部实现,仍然double to String; 这通常是将double(或float)转换为BigDecimal的首选方法;  

 测试代码如下:

package com.qiyuan.util;

import java.math.BigDecimal;

public class orderCode {

    public static void main(String[] args) {
        double d1 = 0.10334;
        double d2 = 1234.0;
        
        System.out.println("new BigDecimal("+d1+")=" + new BigDecimal(d1)); //此种方式绝对不允许!!!!!
        System.out.println("new BigDecimal("+d2+")=" + new BigDecimal(d2)); //此种方式绝对不允许!!!!!
        System.out.println("");
        
        System.out.println("new BigDecimal(String.valueOf("+d1+"))=" + new BigDecimal(String.valueOf(d1)));
        System.out.println("new BigDecimal(String.valueOf("+d2+"))=" + new BigDecimal(String.valueOf(d2)));
        System.out.println("");
        
        System.out.println("new BigDecimal(String.valueOf("+d1+"))=" + new BigDecimal(Double.toString(d1)));
        System.out.println("new BigDecimal(String.valueOf("+d2+"))=" + new BigDecimal(Double.toString(d2)));
        System.out.println("");
        
        System.out.println("BigDecimal.valueOf("+d1+")=" + BigDecimal.valueOf(d1));
        System.out.println("BigDecimal.valueOf("+d2+")=" + BigDecimal.valueOf(d2));
        System.out.println("");

        BigDecimal b1 = BigDecimal.valueOf(1);
        BigDecimal b2 = BigDecimal.valueOf(1.00000);
        System.out.println(b1.equals(b2));
        System.out.println(b1.compareTo(b2));
    }

}

  输出如下:

new BigDecimal(0.10334)=0.10334000000000000130118138486068346537649631500244140625
new BigDecimal(1234.0)=1234

new BigDecimal(String.valueOf(0.10334))=0.10334
new BigDecimal(String.valueOf(1234.0))=1234.0

new BigDecimal(String.valueOf(0.10334))=0.10334
new BigDecimal(String.valueOf(1234.0))=1234.0

BigDecimal.valueOf(0.10334)=0.10334
BigDecimal.valueOf(1234.0)=1234.0

false
0

想要系统学习JAVA推荐JAVA300集
Java300集零基础适合初学者视频教程←点击

标签:java,BigDecimal,valueOf,System,72,new,println,Java,String
来源: https://blog.csdn.net/Limingmingaa/article/details/120847904

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有