예를 들어 숫자 5755.1115에 대해 Java에서 부동 문자열로 올바르게 변환 (분석)하려고합니다.
float fl = new BigDecimal("5755.1115").floatValue();
float fl = (float)5755.1115d;
문제는 항상 5755.1113을 인쇄한다는 것입니다. 정밀도가 떨어지는 것 같습니다 (예를 들어 MathcContext (10)를 사용해 보았지만 작동하지 않았습니다)
하지만 자바 스크립트에서 이것을 시도하면 작동하는 것 같습니다.
var fl = parseFloat('5755.1115');
var str = "" + fl.toPrecision(8);
console.log("number: " + str);
toPrecision () 함수를 사용하지 않아도 정확하게 숫자를 인쇄합니다.
누구든지 Java에서도 이것을 달성 할 수있는 방법을 설명 할 수 있습니까?
편집 : 내 실수, 나는 데이터 전송을 최소한으로 유지해야하기 때문에 이중을 사용하고 싶지 않다는 것을 지정하는 것을 잊었습니다.
자바 측 : 여기 여기
float fl = new BigDecimal("5755.1115").floatValue();
기본적으로 무의미 합니다. 먼저 BigDecimal 객체 ( 임의의 정밀도 를 허용 함 )를 만든 다음 정확한 표현을 훨씬 "덜 정확한"부동 소수점 값으로 바꿉니다. 당신은 잘 쓸 수 있습니다
float fl = 5755.1115f;
대신. "정확한"BigDecimal에 대한 오버 헤드를 사용하고 싶거나 일반적인 Java 부동 소수점 의미 체계에 만족합니다. 하지만 여기서하는 것처럼이 두 개념을 혼합하는 것은 말했듯이 무의미합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다