请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

对create()方法amount参数的提问

老师您好,我才学到7-4,有两个地方不明白,
一是7-4那个create()方法,第二个参数为什么不直接是double,PayRequest的orderAmount也是double,不理解的是为什么要从String转为BigDecimal,然后又从BigDecimal转为double作为PayRequest的参数,传参的时候直接是double不好吗…………
二是,我大概搜了一下,网上很多建议是金额使用Decimal不会失去精度什么的,然后我们这个PayRequest选择的是double,在不参与计算只作为参数时是不是两种选择没有区别?

正在回答

1回答

第一个问题,为什么不直接使用double,这个其实都可以,因为你实现类create方法你存入数据库的金额类型也是decimal类型,这个时候你也要把double转换成decimal类型https://img1.sycdn.imooc.com/szimg/5e2e701a09efbc5812800611.jpg


第二个问题,decimal,看下图

https://img1.sycdn.imooc.com//szimg/5e2e6f6209fd9f2e11180194.jpg

一般情况下如果转decimal都是使用new Bigdicemal("这里面传入string类型")或者是Bigdecimal.valueOf()

因为https://img1.sycdn.imooc.com//szimg/5e2e708d09fde0d807560243.jpg你使用valueof方法他底层还是给你用了new Bigdecimal(“”)里面丰传入字符串才不会造成精度丢失


所以综上所述,一般如果要转成bigdecimal类型都是建议用new BigDecimal(“”)里面使用string类型

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_wo_28 #1
    谢谢您的耐心回答
    原来我要存入数据库的时候是Decimal类型的数据呀,明白白明白了。
    如果我在这里想使用double类型,在存入数据库的时候须转为Decimal类型,在这儿使用Decimal类型,存数据库的时候就不需要再转了,两种方式都差不多。
    问题二也理解了
    十分感谢,/鞠躬
    回复 有任何疑惑可以回复我~ 2020-01-27 13:23:51
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信