在Java中将Double与Long相除会产生错误的结果

时间:2019-05-12 14:49:16

标签: java long-integer

我正在尝试将Java中的Long除以0.99之类的百分比,这样一直在给我疯狂的结果。

long totalBytes = 5877062
long final = (long) (totalBytes / 0.99) // IT PRODUCES 5936426 > totalBytes

enter image description here

我在做什么错?对于1.00来说效果很好,如果我给出0.95 ++,它总是会产生比totalBytes大的东西。

为什么我会失去精度?

Java Version 10.0.2

1 个答案:

答案 0 :(得分:1)

如果要占总字节数的某个百分比,则应乘以十进制百分比与总字节值:

long totalBytes = 5877062;
long percent = (long) (0.99 * totalBytes);