Java关于金额计算的选择方案

原创 2016年05月31日 18:18:57

  这次项目中有支付的模块,所以就会涉及到钱的计算,从网上查了写资料,发现大家都用BigDecimal,与此同时都说不用double,为什么就不用double呢?


  其实大家用BigDecimal的原因是因为它具有更高的精度和更小的范围。那double和BigDecimal相比,精度差多少呢,看下图:


  其实在实际的使用中,我根本不需要这么高的精度,感觉使用double也没什么问题,不过double在设置精度的时候没有BigDecimal方便,所以更倾向使用BigDecimal。


  其实遇到这个问题的时候,我也请教了一些人,我姐夫兼某架构师给出一个很巧妙的方案,


  因为我们涉及的金额不会很大,而且精度只要求到两位,所以他给出的方案用int处理,所有的运算都乘以100,数据库也可以用int,只有在需要显示的时候处理下就行,这样既没有精度问题,运算起来的效率也要比double或者BigDecimal都要高很多。


  如果大家还有什么更好的方案,可以提出来哈,共享下,集体的智慧是无穷的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

金额在数据库中的存储方法

1、decimal,以元为单位,精确到两位小数; 2、
  • caomiao2006
  • caomiao2006
  • 2014年04月15日 09:25
  • 2520

浮点数的那些坑,Java中的金额处理方案

浮点数的那些坑 Java中的金额处理方案
  • lyb3290
  • lyb3290
  • 2016年08月08日 13:44
  • 1084

java中金额(浮点表示)的计算

 java中进行金额的计算经常浮点数丢失精度,造成这种问题的原因应该与cpu对浮点数的计算方式有关,有下面的介绍:从原理上来讲,任何一门语言对于浮点数的计算都是不精确的。因为现在的Computer都是...
  • feiliu010
  • feiliu010
  • 2007年02月26日 11:23
  • 6321

计算金额 财务计算 精确运算 BigDecimal用法详解

一、简介 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效 位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或...
  • u010264560
  • u010264560
  • 2016年10月20日 15:23
  • 1893

Java工具类之——BigDecimal运算封装(包含金额的计算方式)

日常对于金额计算,应该都是用的BigDecimal,  可是苦于没有好的工具类方法,现在贡献一个我正在用的对于数字计算的工具类,项目中就是用的这个,简单粗暴好用,话不多说,代码奉上(该工具类需要引入g...
  • shijing266
  • shijing266
  • 2017年03月23日 17:11
  • 2208

货币计算中的精度问题--java.math.BigDecimal

在项目开发中,经常遇到金额货币的计算,这时候使用float或者double是不满足要求的,以前因为没有经验,所以使用了float,结果造成了计算结果的错误.后来了解到需要使用java.math.Big...
  • soleghost
  • soleghost
  • 2005年06月16日 14:19
  • 3689

java金额类计算封装

import java.math.BigDecimal; import java.math.BigInteger; /**  *   * @Description:TODO  * @...
  • tracy38
  • tracy38
  • 2016年04月25日 14:01
  • 245

java.math.BigDecimal 用户余额计算

使用java.math.BigDecimal进行用户余额计算时,必须分为以下几个步骤:  1、用float或者double变量构建BigDecimal对象。  2、通过调用BigDecimal...
  • zhouzhiwengang
  • zhouzhiwengang
  • 2017年02月10日 15:47
  • 296

Java中存储金额用什么数据类型?

京京肚肚撸代码 2017-04-11 00:21 很早之前, 记得一次面试, 面试官问存储金钱用什么数据类型? 当时只知道8种数据类型(boolean, byte, short, int, long,...
  • u011277123
  • u011277123
  • 2017年04月17日 18:36
  • 9704

java中金额(浮点表示)的计算

java中进行金额的计算经常浮点数丢失精度,造成这种问题的原因应该与cpu对浮点数的计算方式有关,有下面的介绍:从原理上来讲,任何一门语言对于浮点数的计算都是不精确的。因为现在的Computer都是基...
  • dream8062
  • dream8062
  • 2008年05月29日 23:10
  • 847
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java关于金额计算的选择方案
举报原因:
原因补充:

(最多只允许输入30个字)