ユーザーに表示するためのファイルサイズ文字列を作成するメソッドがあります。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 は続けて次のように述べています。ラウンドは、浮動小数点演算を使用して実行されることを意図していました。」
それはどのようにノーオペレーションですか?明示的なキャストを追加して、代わりに表示する(size * 10) / 1024
必要がありますか?((float)size * 10) / 1024