float를 BigDecimal로 변환하려고 시도 중입니다. 그 후 나는 플로트에서 최종 결과를 요구할 것이다.float를 BigDecimal로 변환 한 다음 다시 float으로 변경합니다.
내가 아는 바로는, float을 BigDecimal 숫자로 만드는 유일한 방법은 문자열 생성자를 사용하는 것입니다.
두 가지 접근 방식이 있지만 둘 다 작동하지 않습니다. 안전하게 내가 변환 할 때 정밀도를 잃을 수학을하지 할 수있는 방법이 있나요
Float num1 = 13.846154f;
BigDecimal calculation = new BigDecimal(Float.toString(num1));
BigDecimal num2 = new BigDecimal("2.0").add(calculation);
Float finalResults = Float.parseFloat(num2.toString());
:
Float num1 = 13.846154f;
BigDecimal calculation = new BigDecimal(Float.toString(num1));
BigDecimal num2 = new BigDecimal("2.0").add(calculation);
Float finalResults = num2.floatValue();
접근 방법 # 2 : 모두 나에게 추가 0.000001 값
접근법 # 1을 제공합니다 번호가 다시 떠 다니는가요?
편집 # 1 일부 테스트를 수행하고 이상한 것을 발견했습니다.
플로트 원본 = 13.846154f; 당신이 어떤 정밀도의 손실을 방지하려면
BigDecimal originalNum = new BigDecimal(Float.valueOf(original));
BigDecimal numTwo = new BigDecimal("14.0");
BigDecimal numThree = new BigDecimal("20.0");
BigDecimal numFour = new BigDecimal("30.0");
numTwo = numTwo.add(originalNum);
numThree = numThree.add(originalNum);
numFour = numFour.add(originalNum);
그것은 여전히 추가 0.000001 것을 추가하고있다 ..
Float.toString (num1)의 결과를 인쇄하여 BigDecimal 생성자로 가져 오는 항목이 무엇인지 생각해 보았습니까? –
'float' 또는'Float'을'BigDecimal # add'에 넘길 수 없습니다. – rgettman
@rgettman 나는 OP가 sth를 의미한다고 생각한다. 편집을 확인해주세요. – Juvanis