java中货币值转换时浮点型数值需要注意

比如:9.9元转成分应该是990分。
但是想当然的用9.9f*100得到的是989分,9.9d*100倒是990分。
所以,币值转换时,浮点数乘法要当心。
这现象一定和java中浮点数的保存有关,估计浮点型是无限趋近吧。

最稳妥的办法是浮点币值*100后+0.5
不用float改用double也能部分解决这问题,
但是如果一个数值一开始是float,后续被强转为double,也是不行的。
所以,最稳妥就是结果+0.5,浮点强转int不会四舍五入,而是直接丢掉小数。

为什么是这个现象呢,答案就在浮点数的保存这块知识点,
搞过嵌入式的就算没有清晰的轮廓,但也知道该从哪去找原因,
但有时候何必要去探究太深,要用到时知道从书架上拿哪本书就行了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值