iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >如何在java中利用BigDecimal计算货币金额
  • 322
分享到

如何在java中利用BigDecimal计算货币金额

2023-06-06 10:06:29 322人浏览 薄情痞子
摘要

今天就跟大家聊聊有关如何在java中利用BigDecimal计算货币金额,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。float和double只能用来做科学计算或者是工程计算,在商业

今天就跟大家聊聊有关如何在java中利用BigDecimal计算货币金额,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal。

而且使用BigDecimal类也可以进行大数的操作。

方法类型描述
public BigDecimal(double val)构造将double表示形式转换为BigDecimal
public BigDecimal(int val)构造将int表示形式转换为BigDecimal
public BigDecimal(String val)构造字符串表示形式转换为BigDecimal
public BigDecimal add(BigDecimal augend)普通加法
public BigDecimal subtract(BigDecimal subtrahend)普通减法
public BigDecimal multiply(BigDecimal multiplicand)普通乘法
public BigDecimal divide(BigDecimal divisor)普通除法

一、 BigDecimal的计算

金额的计算BigDecimal类

double d = 9.84;double d2 = 1.22;//注意需要使用BigDecimal(String val)构造方法BigDecimal bigDecimal = new BigDecimal(Double.toString(d));BigDecimal bigDecimal2 = new BigDecimal(Double.toString(d2));//加法BigDecimal bigDecimalAdd = bigDecimal.add(bigDecimal2);double add = bigDecimalAdd.doubleValue();//减法BigDecimal bigDecimalSubtract = bigDecimal.subtract(bigDecimal2);double subtract = bigDecimalSubtract.doubleValue();//乘法BigDecimal bigDecimalMultiply = bigDecimal.multiply(bigDecimal2);double multiply = bigDecimalMultiply.doubleValue();//除法int scale = 2;//保留2位小数BigDecimal bigDecimalDivide = bigDecimal.divide(bigDecimal2, scale, BigDecimal.ROUND_HALF_UP);double divide = bigDecimalDivide.doubleValue();//格式化double fORMat = 12343171.6;//获取常规数值格式NumberFormat number = NumberFormat.getNumberInstance();String str = number.format(format);//12,343,171.6//获取整数数值格式NumberFormat integer = NumberFormat.getIntegerInstance();str = integer.format(format);//如果带小数会四舍五入到整数12,343,172//获取货币数值格式NumberFormat currency = NumberFormat.getCurrencyInstance();currency.setMinimumFractionDigits(2);//设置数的小数部分所允许的最小位数(如果不足后面补0)currency.setMaximumFractionDigits(4);//设置数的小数部分所允许的最大位数(如果超过会四舍五入)str = currency.format(format);//¥12,343,171.60//获取显示百分比的格式NumberFormat percent = NumberFormat.getPercentInstance();percent.setMinimumFractionDigits(2);//设置数的小数部分所允许的最小位数(如果不足后面补0)percent.setMaximumFractionDigits(3);//设置数的小数部分所允许的最大位数(如果超过会四舍五入)str = percent.format(format);//1,234,317,160.00%

二、典型的Double类型的数值运算

public class DoubleUtil implements Serializable { private static final long serialVersionUID = -3345205828566485102L; // 默认除法运算精度 private static final Integer DEF_DIV_SCALE = 2;  public static Double add(Double value1, Double value2) {  BigDecimal b1 = new BigDecimal(Double.toString(value1));  BigDecimal b2 = new BigDecimal(Double.toString(value2));  return b1.add(b2).doubleValue(); }  public static double sub(Double value1, Double value2) {  BigDecimal b1 = new BigDecimal(Double.toString(value1));  BigDecimal b2 = new BigDecimal(Double.toString(value2));  return b1.subtract(b2).doubleValue(); }  public static Double mul(Double value1, Double value2) {  BigDecimal b1 = new BigDecimal(Double.toString(value1));  BigDecimal b2 = new BigDecimal(Double.toString(value2));  return b1.multiply(b2).doubleValue(); }  public static Double divide(Double dividend, Double divisor) {  return divide(dividend, divisor, DEF_DIV_SCALE); }  public static Double divide(Double dividend, Double divisor, Integer scale) {  if (scale < 0) {   throw new IllegalArgumentException("The scale must be a positive integer or zero");  }  BigDecimal b1 = new BigDecimal(Double.toString(dividend));  BigDecimal b2 = new BigDecimal(Double.toString(divisor));  return b1.divide(b2, scale,RoundingMode.HALF_UP).doubleValue(); }  public static double round(double value,int scale){  if(scale<0){   throw new IllegalArgumentException("The scale must be a positive integer or zero");  }  BigDecimal b = new BigDecimal(Double.toString(value));  BigDecimal one = new BigDecimal("1");  return b.divide(one,scale, RoundingMode.HALF_UP).doubleValue(); }}

补充:Java存储金额解决方案BigDecimal

使用BigDecimal来存储金额数据,数据库中使用decimal类型,长度18,小数点2。

在JPA中创建时如下:

@Column(columnDefinition="decimal(18,2)") private BigDecimal price; //商品价格

数据库中创建时如下:

如何在java中利用BigDecimal计算货币金额

常用构造器:

BigDecimal(double) 创建一个具有参数所指定双精度值的对象

BigDecimal(long) 创建一个具有参数所指定长整数值的对象

BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象

常用方法:加减乘除

add(BigDecimal) BigDecimal对象中的值相加,返回BigDecimal对象

subtract(BigDecimal) BigDecimal对象中的值相减,返回BigDecimal对象

multiply(BigDecimal) BigDecimal对象中的值相乘,返回BigDecimal对象

divide(BigDecimal) BigDecimal对象中的值相除,返回BigDecimal对象

常用方法:数据转换

toString() 将BigDecimal对象中的值转换成字符串

doubleValue() 将BigDecimal对象中的值转换成双精度数

floatValue() 将BigDecimal对象中的值转换成单精度数

longValue() 将BigDecimal对象中的值转换成长整数

intValue() 将BigDecimal对象中的值转换成整数

看完上述内容,你们对如何在java中利用BigDecimal计算货币金额有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: 如何在java中利用BigDecimal计算货币金额

本文链接: https://www.lsjlt.com/news/246446.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在java中利用BigDecimal计算货币金额
    今天就跟大家聊聊有关如何在java中利用BigDecimal计算货币金额,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。float和double只能用来做科学计算或者是工程计算,在商业...
    99+
    2023-06-06
  • Java中的高精度计算怎么利用BigDecimal实现
    本篇文章给大家分享的是有关Java中的高精度计算怎么利用BigDecimal实现,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先看如下代码示例:System.out.prin...
    99+
    2023-05-31
    java ava bigdecimal
  • Java如何利用递归计算出阶乘
    目录一. 递归1. 简介2. 使用场景3. 特点4. 基本用法5. 三大要素6. 代码案例6.1 计算阶乘6.2 输出数字中每一位上的值二. 结语一. 递归 1. 简介 所谓的递归,...
    99+
    2023-05-19
    Java递归方法 Java递归求阶乘
  • LeetCode算法中如何利用Java的NumPy对象进行高效计算?
    在LeetCode算法题中,我们常常需要进行各种复杂的数学运算,如矩阵乘法、向量点积等。而Java作为一门语言,对于这些数学运算的支持并不是那么完善。因此,我们需要借助一些第三方库来帮助我们进行高效的计算。其中,NumPy就是一个非常好的...
    99+
    2023-06-01
    numy 对象 leetcode
  • 如何在Java项目中利用余弦方法实现一个相似度计算算法
    本篇文章给大家分享的是有关如何在Java项目中利用余弦方法实现一个相似度计算算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。(1)余弦相似性通过测量两个向量之间的角的余弦值来...
    99+
    2023-05-31
    java 余弦 ava
  • 如何在Java中使用NumPy进行数学计算?
    NumPy是一个强大的Python库,主要用于科学计算和数学计算。它提供了一个高效的多维数组对象和一系列工具,可以轻松处理大型数据集和复杂的数学计算。虽然Java没有内置的NumPy库,但我们可以使用Java NumPy库来实现类似的功能...
    99+
    2023-10-18
    path ide numy
  • 如何在Java中使用Numpy来处理数值计算?
    Java是一门广泛使用的编程语言,在数值计算方面,Java本身的数值计算库已经相当强大,但是在一些特定的数值计算场景中,需要使用专业的数值计算库来进行更加高效的计算。其中,Numpy是一款专门用于数值计算的Python库,它提供了一系列高效...
    99+
    2023-06-14
    http numpy 索引
  • CentOS在云计算中如何应用
    CentOS 在云计算中是一个非常流行的操作系统,因为它是一个免费、开源的Linux 发行版,具有稳定性和安全性。在云计算中,Cen...
    99+
    2024-05-09
    CentOS
  • 如何在MySQL中设计一个可扩展的会计系统表结构以支持多种货币和汇率处理?
    如何在MySQL中设计一个可扩展的会计系统表结构以支持多种货币和汇率处理?随着全球经济的发展,越来越多的企业需要在其会计系统中处理多种货币和汇率。为了有效地支持这种需求,我们需要在数据库中设计一个可扩展的表结构。在MySQL中,我们可以通过...
    99+
    2023-10-31
    MySQL 表结构 会计系统
  • 怎么在java中利用GUI实现一个加法计算器
    怎么在java中利用GUI实现一个加法计算器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据...
    99+
    2023-06-14
  • 如何利用Java AWT 创建一个简易计算器
    目录一、关于AWT二、逻辑部分1.对于数字按钮2.对于算术按钮3.对于等号按钮4.对于清除按钮5.对于退格按钮6.特殊插件功能7.==例如==:三、GIF演示四、附完整代码摘要:手把...
    99+
    2024-04-02
  • Java RESTful API 在云计算中的应用:利用云平台的优势
    利用云平台的优势 云计算平台如 AWS、Azure 和谷歌云提供一系列服务,简化了 RESTful API 的开发和部署。这些服务包括: 无服务器计算: 托管在云上的函数即服务 (FaaS) 平台,如 AWS Lambda 和 Azu...
    99+
    2024-03-07
    RESTful API、云计算、Java、云平台、应用程序开发
  • PL/SQL在云计算中如何应用
    PL/SQL在云计算中可以被广泛应用于数据库管理和数据处理方面。以下是一些PL/SQL在云计算中的应用场景: 数据库管理:通过P...
    99+
    2024-05-08
    PL/SQL
  • 如何在JavaScript中引用计数算法
    这篇文章将为大家详细讲解有关如何在JavaScript中引用计数算法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、说明引用计数算法定义内存不再使用的标准很简单,就是看一个对象是否有指向它...
    99+
    2023-06-15
  • 如何在Java中实现分布式实时计算?
    随着数据量的增长,传统的单机实时计算已经无法满足业务需求。分布式实时计算能够将计算任务分散到多台机器上,从而提高计算效率和可靠性。本文将介绍如何使用Java实现分布式实时计算。 一、什么是分布式实时计算? 分布式实时计算是指将一个大任务分...
    99+
    2023-06-07
    关键字 分布式 实时
  • 如何在Java中使用位运算
    如何在Java中使用位运算?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、位运算的分类与展现效果java位运算可以分为左移和右移,其中右移还有无符号右移。 j...
    99+
    2023-06-15
  • 如何利用java在IE中打开Excel
    本篇内容主要讲解“如何利用java在IE中打开Excel”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何利用java在IE中打开Excel”吧!java 代码:publicclass Test...
    99+
    2023-06-03
  • 利用java如何实现计算两个日期的时间差
    今天就跟大家聊聊有关利用java如何实现计算两个日期的时间差,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。java计算两个日期中间的时间其中在数据库中有一个字段为datetime类型...
    99+
    2023-05-31
    java 时间差 ava
  • 你知道如何在Java中使用NumPy进行科学计算吗?
    当我们需要进行科学计算的时候,NumPy(Numerical Python)是一个非常有用的Python库。但是,如果你正在使用Java语言进行编程,你也可以使用NumPy进行科学计算。在本文中,我们将介绍如何在Java中使用NumPy进行...
    99+
    2023-10-28
    git npm numy
  • Java 中的分布式自然语言处理:如何利用 Numpy 加速计算?
    自然语言处理(NLP)是人工智能领域中的一个重要分支,它研究如何让计算机能够理解、处理和生成自然语言。在实际应用中,NLP 技术被广泛应用于智能客服、机器翻译、文本分类、情感分析等领域。然而,NLP 的计算复杂度较高,特别是在处理大规模文...
    99+
    2023-11-12
    分布式 numpy 自然语言处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作