2017-03-04 2 views
2

float에 소수점 3 개를 사용하는 방법이 있지만 문자열 표현 "4.00000009"를 작성하려면 어떻게해야합니까? 나는 그것을 부유물로 바꾼다? Float.parseFloat()은 4.0으로 반올림합니다. 여분의 라이브러리를 사용하지 않는 것이 이상적입니다.자바에서 세 개의 소수점이있는 부동 소수점으로 문자열을 구문 분석하는 방법

+0

문제가 정확히 무엇입니까? 4.0 = 4.000 –

+0

's = s.substring (0, s.indexOf (".") + 4)' – QBrute

+0

값의 동등성에 관계없이 3 개의 소수점을 가져야한다는 요구 사항입니다. –

답변

1

문자열의 형식이 올바로 지정되어 있으면 소수점 인덱스를 기반으로 하위 문자열을 사용할 수 있습니다.

또는 구문 분석하고 천 단위로 곱하고 반올림하여 천 단위로 나눌 수 있습니다.

그러나 이것은 장기적으로 당신에게 좋지 않을 것입니다. 정확한 값이 필요할 때 부동 소수점 숫자는 너무 잘 계산되지 않습니다. 대신 BigDecimal을 고려하십시오.

1

이 유틸리티 방법은 String를 취하고 float 3 소수의 장소로 변합니다 :

public static float getFloat(String s) { 
    BigDecimal decimal = new BigDecimal(s); 
    decimal = decimal.setScale(3, RoundingMode.HALF_UP); 
    return decimal.floatValue(); 
} 
+0

BigDecimal이 답입니다. – LppEdd