float에 소수점 3 개를 사용하는 방법이 있지만 문자열 표현 "4.00000009"를 작성하려면 어떻게해야합니까? 나는 그것을 부유물로 바꾼다? Float.parseFloat()
은 4.0으로 반올림합니다. 여분의 라이브러리를 사용하지 않는 것이 이상적입니다.자바에서 세 개의 소수점이있는 부동 소수점으로 문자열을 구문 분석하는 방법
2
A
답변
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
문제가 정확히 무엇입니까? 4.0 = 4.000 –
's = s.substring (0, s.indexOf (".") + 4)' – QBrute
값의 동등성에 관계없이 3 개의 소수점을 가져야한다는 요구 사항입니다. –