文档章节

金额的计算BigDecimal类

Big_BoBo
 Big_BoBo
发布于 2013/10/29 16:32
字数 280
阅读 85
收藏 1
点赞 0
评论 0
金额的计算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%

本文转载自:http://an-it-eye-2012.iteye.com/blog/1617953

共有 人打赏支持
Big_BoBo
粉丝 52
博文 54
码字总数 22137
作品 0
杭州
高级程序员
计算金额 财务计算 精确运算 BigDecimal用法详解

一、简介 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效 位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算...

jerry__sun
2016/07/07
581
1
等额本金、等额本息工具类(Java版)

等额本息 / ** * Description:等额本息工具类 * Copyright: Copyright (corporation)2015 * Company: Corporation * @author: 凯文加内特 * @version: 1.0 * Created at: 2015年11月30日 下午......

mrliuze
2016/08/12
43
0
【java】使用BigDecimal计算时候注意事项

一般数据在用BigDecimal自带的运算方式时候是不会出现问题的,但是碰到了无限小数的时候,这个类直接运算方式就会出现一些取不到位或者溢出的错误。 错误1:Non-terminating decimal expansi...

tr1912
03/31
0
0
金融系统中正确的金额计算及存储方式

image 昨天微信群里在讨论金额计算及存储的话题,今天特来结贴一下。 经典的精度丢失问题 Java中的类型float、double用来做计算会有精度丢失问题,下面来看下面的示例。 上面的程序输出结果是...

架构之路
2017/12/01
0
0
java.math.BigDecimal保留两位小数,保留小数,精确位数

java保留两位小数问题: 方式一(四舍五入形式保留两位小数,注意模式ROUNDHALFUP): 四舍五入 double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigD...

vshcxl
2016/10/27
2.2K
0
javaweb中关于金额数值的计算

话不多说; 直接上教程 第一: 数据库字段类型(保留2个小数) 第二:封装类采用BigDecimal类型接收 第三:计算采用Money对象工具类计算:如加减乘除,比大小等等 测试结果查看:...

尾生
2016/12/23
24
0
java开发实战之语法篇(每日一题)

11.27 1,错误信息与标准信息的输出 标准信息输出流out(黑色) 错误信息输出流err(红色) package conn.cev.yufa; public class yufa { public static void main(String[] args) { System...

眉间雪
07/03
0
0
spring set的问题

/* * 查找所有的项目开票和回款信息 */ @Transactional public List findAllFinanceInfors() { List lists=new ArrayList(); Set projects=projectDAO.findAllProjects(); BigDecimal Money......

wenwen1
2012/12/20
243
2
关于BigDecimal的大坑

背景: 判断金额为0情况下,不处理业务; 问题 业务数据是一个快照(json格式存储),其中有一个金额为0.00,转换为对象中的某个属性(BigDecimal类型) 后 用 BigDecimal.ZERO.equals(amoun...

oswebgod
02/12
0
0
BigDecimal类的加/减/乘/除

对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作。BigDecimal类的常用方法如...

easonwang
2012/01/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

DUBBO 详细介绍

摘要: 主要核心部件: Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制. RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能 Registry: 服务目录框架...

明理萝
14分钟前
0
1
4 个快速的 Python 编译器 for 2018

简评:Python 和其他的解释型语言一样经常被吐槽性能不行,所以开发人员为了提升性能创建了不少编译器,本文则选取其中的四个做了基准测试。 Python 其实是一种相当快的语言,但它并不像编译...

极光推送
17分钟前
0
0
spring boot注册多个MQ服务器的问题

关于注册到多个MQ源的文章已经有很多了,这里记录一下声明queue的坑; 如果使用注册bean的方式声明queue,会导致声明的queue同时被注册到所有的MQ源上; //如果使用下面的声明方式,que...

placeholder
19分钟前
0
0
Java面试基础篇——第九篇:BIO,NIO,AIO的区别

现在IO模型主要分三类:BIO(同步阻塞IO),NIO(同步非阻塞IO),AIO()。 先来看看BIO。 1. BIO 服务端接受到请求后,要指派或新建一个线程去处理客户端的IO请求,直到收到断开连接的指令。这么做...

developlee的潇洒人生
24分钟前
0
0
@RequestMapping @ResponseBody 和 @RequestBody 用法与区别

1.@RequestMapping 国际惯例先介绍什么是@RequestMapping,@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为...

特拉仔
26分钟前
1
0
基于 HTML5 结合互联网+ 的 3D 隧道

前言 目前,物资采购和人力成本是隧道业发展的两大瓶颈。比如依靠民间借贷,融资成本很高;采购价格不透明,没有增值税发票;还有项目管控和供应链管理的问题。成本在不断上升,利润在不断下...

xhload3d
28分钟前
0
0
济南小程序热度分析

原文链接:http://www.jnqianle.cn/company/2072.html

tianma3798
29分钟前
1
0
大数据软件

beats 采集 kafka spark hive es grafana zeppelin

ArlenXu
31分钟前
0
0
Mac item2常用快捷键

标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:command + f 分屏 水平分屏:command + d 垂直分屏:c...

说回答
34分钟前
0
0
mac常用软件

1.excel for mac http://www.pc6.com/mac/114205.html

小黑202
34分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部