java 货币用什么类型,金钱货币用什么类型--(Java)

c4468b3f4df77e96b0a416fa2a870fba.png

金钱货币用什么类型--(Java)

0、前言

项目中,基本上都会涉及到金钱;那么金钱用什么数据类型存储呢?

不少新人都会认为用double,因为它是双精度类型啊,或者float,

其实,float和double都是不能用来表示精确的类型的,也就是说金钱是万万不能用float和double来存储的!

1、why?

先来个例子:

946716897b50634fda3b946c81f2281d.png

你猜猜输出是什么,0.01?NO,请看:

526f963334c1b3fab38522b800aec7e0.png

为什么会这样呢?

因为float和double都是浮点数, 都有取值范围, 都有精度范围. 浮点数与通常使用的小数不同, 使用中, 往往难以确定.

常见的问题是定义了一个浮点数, 经过一系列的计算, 它本来应该等于某个确定值, 但实际上并不是!

所以说,float和double都是不能用来表示精确的类型的;

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

2、结论

float和double都是不能用来表示精确的类型的,也就是说金钱是万万不能用float和double来存储的!

金钱应该采用java.math.BigDecimal存储;

MYSQL数据库选择decimal类型,注意默认值 一定写成0.00, 不要用默认的NULL, 否则在进行加减排序等操作时, 会带来转换的麻烦!

3、BigDecimal的常用方法

60bc9a53ce198a6137f60aa40aac201e.png

a08bf955f99657bdb0f40f68369a9638.png

ccc4cfec830aaf3a16702941b4ecfe6c.png

原文链接:https://www.cnblogs.com/yanghj/p/12834423.html

如有疑问请与原作者联系

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值