Java 里要表示 decimal 类型,就是采用 BigDecimal 这个吗?

2017-10-06 10:56:16 +08:00
 xiaoyanbot

阿里的 Java 手册里写着:

6.  [强制] 小数类型为 decimal,禁止使用 float 和 double。
说明:float 和 double 在存储的时候,存在精度损失的问题,很可能在值的比较时,得到不
正确的结果。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数分开存储。

具体到实现,decimal 是用 BigDecimal 这个实现吗? 还是 Java 里有 decimal 这个类型?

18411 次点击
所在节点    Java
5 条回复
depress
2017-10-06 11:44:03 +08:00
就是 BigDecimal
SoulSleep
2017-10-06 20:37:21 +08:00
是。目测这是阿里的 Java 规范啊...

不要用 Double 初始化一个 BigDecimal 对象
建议能用纯整数时,不用小数。因为...Double 丢失精度这个 feature,并不是所有人都知道....
jhdxr
2017-10-06 21:29:33 +08:00
被你的 这个问题刷屏了,不知道你为什么同时在这么多语言的板块里问一个 MySQL 的问题。

你贴的这一段规范适用于且仅适用于 MySQL。
你贴的这一段规范适用于且仅适用于 MySQL。
你贴的这一段规范适用于且仅适用于 MySQL。

别的数据库 /语言,也许有(或者说一般都有)专门的类库或方式处理浮点数精度的问题,但它真不一定叫 decimal。
loveCoding
2017-10-07 14:31:03 +08:00
阿里这份手册如果没有经验看了是没用的
abcbuzhiming
2017-10-08 11:32:51 +08:00
java 有 float,double,BigDecimal 三种,前两者会损失精度,最后一个是专门用于高精度计算的大数类型,但是会损失性能。如果用于金融场合且小数位并不多的时候,可以考虑 BigDecimal,但是如果小数位较多,建议整体变成 BigInt

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/395614

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX