문제

전환하고 싶습니다 double ~ 안으로 String. 나는 가능한 한 숫자가 거의없고 최대 6 개를 갖기를 원합니다.

그래서 나는 찾았다 String.format("%.6f", d) 내 변환 100.0 ~ 안으로 100.000000. Max Precision은 올바르게 작동하지만 전환하고 싶습니다. 100 (최소 정밀도). 어떤 방법이 그렇게 작동하는지 아십니까?

도움이 되었습니까?

해결책

사용 DecimalFormat: new DecimalFormat("#.0#####").format(d).

이것은 1 ~ 6 자리 숫자의 숫자를 생성합니다.

부터 DecimalFormat 기본 로케일의 기호를 사용하면 사용할 기호를 제공 할 수 있습니다.

//Format using english symbols, e.g. 100.0 instead of 100,0
new DecimalFormat("#.0#####", DecimalFormatSymbols.getInstance( Locale.ENGLISH )).format(d)

100.0 ~ 100을 포맷하려면 형식 문자열을 사용하십시오. #.######.

주목하십시오 DecimalFormat 기본적으로 반올림됩니다. 0.9999999 출력을 얻을 수 있습니다 1. 당신이 원한다면 0.999999 대신 다른 반올림 모드를 제공합니다.

DecimalFormat formatter = new DecimalFormat("#.######", DecimalFormatSymbols.getInstance( Locale.ENGLISH ));
formatter.setRoundingMode( RoundingMode.DOWN );
String s = formatter.format(d);

다른 팁

이것은 작동하는 저렴한 해킹입니다 (반올림 문제를 도입하지는 않습니다).

String string = String.format("%.6f", d).replaceAll("(\\.\\d+?)0*$", "$1");

String.format("%.0", d) 소수점 자리를 줄 것입니다

-또는-

String.format("%d", (int)Math.round(f))

당신은 그냥 만들 수 없었습니다 setPrecision 기능, 이와 같은 기능

private static String setPrecision(double amt, int precision){
   return String.format("%." + precision + "f", amt);
}

그런 다음 물론 전화하십시오

setPrecision(variable, 2); //

분명히 당신은 반올림이나 당신이해야 할 일을 위해 그것을 2 번 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top