double输出科学计数法导致的生产bug

double输出科学计数法导致的生产bug

现有需求:通过提前设置的好的转换模式汇率,将源币种金额转换成目标币种金额。
其中转换模式在数据库中为int,例如

描述
1 表示源币种*汇率=目标币种
2 表示源币种%汇率=目标币种

汇率为double,例如:

源币种 目标币种 汇率 日期
韩元 美元 0.0008453 2021-12-16
欧元 日元 129.3436 2021-12-16

我们系统中判断,如果当天不存在汇率,需要查找之前日期的汇率,并且汇率必须大于0。如果是0或者不存在汇率系统都要提示让管理员维护汇率。


问题描述:

顾问早上打电话说:我维护了韩元兑换美元的汇率,但是系统依然提示要我维护汇率!!!
当时第一反应是不是配置出错了,让他仔细看看,经过再三确认,汇率确实存在,并且大于0。由此判断系统出现BUG!!!
先看问题代码,大概如下:

//根据源币种和目标币种以及日期获取 转换模式 和 汇率
public void getConverModeAndRateInfoByCurrency(String sourceCurrency,String targetCurrency,LocalDate time) {
   
     //1.查询数据库,只返回一条数据,如果没有报错。 rs为数据库的一条数据结果集,代码中是这样进行处理的。
     String converModeAndRate =  rs.getInteger("conver_mode") + "-" + rs.getDouble("rate");
     //2.忽略空值,到这里一定有 转换模式 和 汇率
     String[] converModeAndRates = converModeAndRate.splite("-");
     Double zero = 0.0d;
     //大概就是这样的判断,看他的汇率是否是0
     if(converModeAndRates.length != 2 || zero.compareTo(new Double(converModeAndRates[1])) >= 0){
   
		//报错: 提示管理员维护汇率!!!
	 }
}

请先思考,这段代码有什么问题呢???
反正我当时并没有发现有什么地方会出现bug。还是太年轻了,基础不牢靠。。。


原因分析:

在说具体问题之前,我们先来看看下面这段代码:

public static void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值