BigDecimal类的简单使用方法

BigDecimal类的简单使用方法

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

一提到Java里面的商业计算,我们都知道不能用float和double,由于他们无法进行精确计算。可是Java的设计者给编程人员提供了一个非常实用的类BigDecimal,他能够完好float和double类无法进行精确计算的缺憾。BigDecimal类位于java.maths类包下。首先我们来看下怎样构造一个BigDecimal对象。它的构造函数非常多,我挑最经常使用的两个来演示一下:一个就是BigDecimal(double val),还有一个就是BigDecimal(String str)。这两个看上去没什么太大差别,可是正像API描写叙述中说的那样:

也就是说利用double作为參数的构造函数,无法精确构造一个BigDecimal对象,须要自己指定一个上下文的环境,也就是指定精确位。而利用String对象作为參数传入的构造函数能精确的构造出一个BigDecimal对象。请看以下的代码:

输出:

所以我们在选择构造函数时,要看详细需求而定。

另外,非常多人会问到怎么将基本类型,如int,float,double,long,和BigDecimal对象相互转换。非常easy:

基本类型通过构造函数转换成相应的BigDecimal对象,而BigDecimal类提供了诸如intValue(), floatValue(), doubleValue(), longValue()方法来将BigDecimal对象转换成相应的值。

关于BigDecimal是怎样计算的,我以论坛中一个人的提问帖子为例,来简单的写出BigDecimal的运算方法。题目是:李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?

这道题应该是从后往前推,而且要逆运算,最后得出原有酒的体积。

结果:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118064.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • include的使用方法(include和contain)

    include的作用:#include叫做“文件包含”/ include 语句包含并运行指定文件。功能:它的功能是用来指定文件的全部内容替换程序中的命令行,从而使指定的文件与当前源文件连成一个源文件书写格式:#include<文件名>//表示编译系统根据系统头文件存放的目录路径去搜索系统头文件,而不是在源文件目录去查找#include"文件名"//表示编译…

    2022年4月14日
    129
  • 基于MATLAB的矩阵及元素赋值[通俗易懂]

    *内容摘要:该代码用于实现在MATLAB中矩阵及元素的赋值*文件标识:无*作者:*完成日期:2019-3-10*问题描述:给矩阵a赋值>>a=[147;258;369]a=147258369*问题描述:给矩阵全行赋予值…

    2022年4月8日
    85
  • LTE以及OFDM中sample rate, fft size, channel bw, subcarrier, number of sample等概念的理解

    LTE以及OFDM中sample rate, fft size, channel bw, subcarrier, number of sample等概念的理解因为对OFDM中时域和频域的处理有些困惑,查到网上有篇如下的问答,可以帮助理解,所以转载至此。问:Hello,IwasfollowingthechartbelowtounderstandthebasicsofLTEbandwidthconfigurationandputmeintotalconfusion.Couldyoup

    2022年10月16日
    4
  • Laravel 队列发送邮件

    Laravel 队列发送邮件

    2021年10月25日
    36
  • 正则匹配数字,英文以及英文符号

    正则匹配数字,英文以及英文符号网上搜索很多正则验证方法,但都没有一个理想的解决方式。自己总结了下,对于这个问题目前是两种解决方式。1、通过循环字符串对每一个字符进行验证,这个方式简单就不做介绍了2、通过ASCII码匹对符合的次数来判断是否匹配(不要循环)第二种方式是不通过循环来进行正则的验证到达检测效果,这也是博主没找到合适的方法原因(总觉循环没必要)。newRegExp(“[\x20-\x7E]{“+str.length+”}”)通过数字,英文以及英文符号ASCII码的范围对字符串验证,并且加上其出现的次数,如果没有出现

    2022年6月22日
    164
  • python基础之五大标准数据类型

    python基础之五大标准数据类型学习一门语言,往往都是从HelloWorld开始。但是笔者认为,在一个黑框框中输出一个“你好,世界”并没有什么了不起,要看透事物的本质,熟悉一门语言,就要了解其底层,就是我们常常说的基础。本篇从p

    2022年7月5日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号