比如:9.9元转成分应该是990分。
但是想当然的用9.9f*100得到的是989分,9.9d*100倒是990分。
所以,币值转换时,浮点数乘法要当心。
这现象一定和java中浮点数的保存有关,估计浮点型是无限趋近吧。
最稳妥的办法是浮点币值*100后+0.5
不用float改用double也能部分解决这问题,
但是如果一个数值一开始是float,后续被强转为double,也是不行的。
所以,最稳妥就是结果+0.5,浮点强转int不会四舍五入,而是直接丢掉小数。
为什么是这个现象呢,答案就在浮点数的保存这块知识点,
搞过嵌入式的就算没有清晰的轮廓,但也知道该从哪去找原因,
但有时候何必要去探究太深,要用到时知道从书架上拿哪本书就行了。
java中货币值转换时浮点型数值需要注意
最新推荐文章于 2024-04-27 11:09:20 发布