首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

同事因在涉及金钱交易中使用double造成无法挽回的损失,已跑路

作者:Java实用技术

在《Effective Java》这本书(48条)中也提到这个原则:float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal。所以,也才有了这个标题,不是标题党,是之前听一个同事说,他的一个朋友因为用了double来用作金钱运算,导致被黑客利用,造成不少的损失跑路了,下面咱们就来聊聊这个问题吧。

简介

Java中的简单浮点数类型float和double不能够进行运算,或者运算会丢失精度,不光是Java,在其它很多编程语言中也有这样的问题。在大多数情况下,计算的结果是准确的,float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal。

BigDecimal

BigDecimal有多种构造函数,常用的有2种,其中有一种不建议使用,就是double构造方式,建议使用String构造方式。

工具类

由于构造方法要用String对应的构造方法,如果我们要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。你能够忍受这么烦琐的过程吗?下面我们提供一个工具类来简化操作。

测试

(完)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200319A0GKY800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券