首页 > 解决方案 > 在 Java 中将 Long 与 Double 相除会产生错误的结果

问题描述

我试图Long用一个百分比来划分 Java 中的 a 0.99,它一直给我带来疯狂的结果。

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

在此处输入图像描述

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

为什么我失去精度?

Java Version 10.0.2

标签: javalong-integer

解决方案


如果要占总字节数的某个百分比,则应将小数百分比乘以总字节值:

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

推荐阅读