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

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部