2019-06-14 11:05:53

一、精度问题

二、加减乘除

三、大小比较

四、小数位数及四舍五入规则

五、mysql数据库 设计

精度问题:

示例1

问, 结果是多少? 0.01?

No! 结果是0.009999999999999998!

为什么会这样呢? 因为float和double都是浮点数, 都有取值范围, 都有精度范围. 浮点数与通常使用的小数不同, 使用中, 往往难以确定. 常见的问题是定义了一个浮点数, 经过一系列的计算, 它本来应该等于某个确定值, 但实际上并不是!

金额必须是完全精确的计算, 故不能使用double或者float, 而应该采用java.math.BigDecimal.

加减乘除:

两个BigDecimal值应该怎样进行加减乘除呢? +, -, *, / 这样写吗? 不!

加减乘除使用了英文的加减乘除, 即add, substract, multiply和divide

大小比较:

两个BigDecimal值比较使用compareTo方法, 比较结果有-1, 0, 1, 分别表示小于, 等于, 大于; 对于0, 可以使用BigDecimal.ZERO表示!

小数位数及四舍五入规则:

在项目中, 涉及到税费的计算, 计算的结果可能是小数点后面十几位, 那么怎么进行结算呢? 这就需要四舍五入这种东东了

其中setScale的第一个参数是小数位数, 这个示例是保留2位小数, 后面是四舍五入规则.

mysql数据库设计:

BigDecimal在进行入库时, 数据库选择decimal类型, 长度可以自定义, 如18; 小数点我们项目中用的是2, 保留2位小数. 此外还要注意的就是默认值, 一定写成0.00, 不要用默认的NULL, 否则在进行加减排序等操作时, 会带来转换的麻烦!

balance decimal(18,2) DEFAULT ‘0.00’ COMMENT ‘账户余额’,
---------------------
作者:is_Min
来源:CSDN
原文:https://blog.csdn.net/qq_34581118/article/details/79799097
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/wanfeng1937/p/11022363.html

java中BigDecimal的常见用法相关推荐

  1. java中String的常见用法总结

    首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 以下是关于str ...

  2. Java中BigDecimal类介绍及用法

    Java中BigDecimal类介绍及用法 Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高 ...

  3. Java中BigDecimal类常用方法,舍入策略

    标题 Java BigDecimal 的舍入模式 (RoundingMode)详解 提一下银行家算法 BigDecimal和BigInteger Java中BigDecimal常用方法 BigDeci ...

  4. java类型精度排序,Java中BigDecimal精度和相等比较的坑

    为什么要有bigdecimal ,他是干什么的 float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计 ...

  5. Java中Date各种相关用法

    Java中Date各种相关用法 本文主要介绍Java中Date各种相关用法. AD:   Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=C ...

  6. scale和java比较_浅谈java中BigDecimal的equals与compareTo的区别

    这两天在处理支付金额校验的时候出现了点问题,有个金额比较我用了BigDecimal的equals方法来比较两个金额是否相等,结果导致金额比较出现错误(比如3.0与3.00的比较等). [注:以下所讲都 ...

  7. java中arraycopy的用法_[jdk源码阅读系列]Java中System.arraycopy()的用法

    本文转载,原文链接: 3分钟了解Java中System.arraycopy的用法 - 伊万夫斯基 - 博客园  https://www.cnblogs.com/benjieqiang/p/114288 ...

  8. 10个问题让你快速避开java中的jdbc常见坑

    摘要:JDBC,即Java Database Connectivity,java数据库连接.是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范. 本文分享自华为云社区<1 ...

  9. Java中BigDecimal类型的加减乘除及大小比对

    Java中BigDecimal类型的加减乘除及大小比对 前言 BigDecimal解释 创建BigDecimal类型 加减乘除计算 结果分析 结论 除法的补充 两个BigDecimal的比对 前言 在 ...

最新文章

  1. 技术宝典 | 基于标准 WebRTC 低延迟直播的开源实践
  2. inputstream读取html乱码,java InputStream 读取汉语言内容的解决乱码
  3. 全球加密货币总市值突破7500亿美元 比特币市值突破5200亿美元
  4. java核心面试_前100多个核心Java面试问题
  5. 【CF Round #534 Div2】B:Game with string(水题,积累思路)
  6. vmware虚拟机使用docker使用代理国外镜像
  7. 微型计算机主板usb电源损坏,自已动手彻底解决主板USB供电不足的问题
  8. c语言 x%2 什么意思,《X》歌词 printf((x%2)?**%d:##%d\n,x);是什么意思?
  9. 使用Python第三方库requests和bs4 爬取必应首页的图片,并存储到系统对应位置
  10. 【练习】canvas——flappyBird
  11. 万字长文:用Python轻轻松松操作Excel、Word、CSV!
  12. 浏览器端反爬虫特征收集之字体检测
  13. AMiner背后的技术细节与挑战
  14. 密码学归约证明——基于伪随机函数的消息鉴别码方案
  15. JavaMail 学习讲解
  16. 软件架构设计的6个步骤及工作内容
  17. ofo获蚂蚁金服投资,双方走到一起的原因与钱基本无关?
  18. python做股票系统_GitHub - pustar/stock: stock,股票系统。使用python进行开发。
  19. element ui 图片加载失败_element图片懒加载的问题
  20. ui和平面设计的区别?ui设计做什么的?

热门文章

  1. C++语言之继承中的特点
  2. C++20 - 下一个大版本功能确定
  3. 《流浪地球》虽好,却存在一个不可回避的硬伤!
  4. 语音识别发展必牺牲隐私?最大问题或因不符用户预期,需增透明性
  5. 2019世界机器人大赛总决赛在河北保定开赛
  6. 利用pip3 install --upgrade批量更新已过期的python库
  7. Fedora 30用dnf安装OpenCV及g++编译其应用程序
  8. RS232详解(续)
  9. 使用Elasticsearch+filebeat+logstach+kibana构建日志服务平台
  10. sklearn 随机分割数据_sklearn.ensemble.RandomForestClassifier 随机深林参数详解