gpt4 book ai didi

java - int 值转换为 float,然后传递给 Math.round

转载 作者:行者123 更新时间:2023-12-04 14:36:35 25 4
gpt4 key购买 nike

我有一个方法可以创建一个文件大小字符串来显示给用户。 FindBugs 说 int 被转换为 float,然后传递给 Math.round

 public static String createFileSizeString(long size)
{
if (size < 1024)
{
return size + " bytes";
}
else if (size < 1048576)
{
return (Math.round(((size * 10) / 1024)) / 10) + " KB";
}
else
{
return (Math.round(((size * 10) / 1048576)) / 10) + " MB";
}
}

FindBugs 继续说:“这个操作应该始终是空操作,因为将整数转换为 float 应该给出一个没有小数部分的数字。很可能生成要传递的值的操作到 Math.round 旨在使用浮点运算来执行。”

为什么是空操作?我是否应该向 (size * 10)/1024 添加一个显式转换,以便 ((float)size * 10)/1024 出现?

最佳答案

代码

((size * 10) / 1024)

是一个整数,如果将整数四舍五入,每次都应该得到相同的数字。

也许你的本意是向下取整

return size * 10 / 1024 / 10.0 + " KB";

或四舍五入。

return (size * 10 + 512) / 1024 / 10.0 + " KB";

或使用 Math.round 几乎相同

return Math.round(size / 102.4) / 10.0 + " KB";

这将为您提供小数点后一位的数字 KB。

关于java - int 值转换为 float,然后传递给 Math.round,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16063939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com