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

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

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

为什么是这个现象呢,答案就在浮点数的保存这块知识点,
搞过嵌入式的就算没有清晰的轮廓,但也知道该从哪去找原因,
但有时候何必要去探究太深,要用到时知道从书架上拿哪本书就行了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值