对create()方法amount参数的提问
来源:7-4 支付-师兄教你看错误信息进行代码Review

qq_wo_28
2020-01-25
老师您好,我才学到7-4,有两个地方不明白,
一是7-4那个create()方法,第二个参数为什么不直接是double,PayRequest的orderAmount也是double,不理解的是为什么要从String转为BigDecimal,然后又从BigDecimal转为double作为PayRequest的参数,传参的时候直接是double不好吗…………
二是,我大概搜了一下,网上很多建议是金额使用Decimal不会失去精度什么的,然后我们这个PayRequest选择的是double,在不参与计算只作为参数时是不是两种选择没有区别?
写回答
1回答
-
第一个问题,为什么不直接使用double,这个其实都可以,因为你实现类create方法你存入数据库的金额类型也是decimal类型,这个时候你也要把double转换成decimal类型
第二个问题,decimal,看下图
一般情况下如果转decimal都是使用new Bigdicemal("这里面传入string类型")或者是Bigdecimal.valueOf()
因为
你使用valueof方法他底层还是给你用了new Bigdecimal(“”)里面丰传入字符串才不会造成精度丢失
所以综上所述,一般如果要转成bigdecimal类型都是建议用new BigDecimal(“”)里面使用string类型
012020-01-27
相似问题