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

Dividing Long with Double in Java producing wrong results

我正在尝试将 Java 中的 Long0.99 之类的百分比相除,但它总是给我疯狂的结果。

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

我做错了什么?对于 1.00 它运作良好,如果我给 0.95 ++ 它总是产生比 totalBytes.

更大的东西

为什么我会失去精度?

Java Version 10.0.2

如果您想占总字节数的一定百分比,您应该乘以小数百分比与总字节数的值:

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