2
사용자에게 표시 할 파일 크기 문자열을 만드는 메소드가 있습니다. FindBugs는 int가 부동 소수점 형으로 캐스팅 된 다음 Math.round으로 전달되었다고 말합니다.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
이 대신 표시되어야하나요?