2014-05-15 3 views
-3
import java.math.*; 

public class Test{ 
public static void main(String args[]){ 

BigDecimal initialValue = BigDecimal.valueOf(193); 
BigDecimal divider = BigDecimal.valueOf(3); 
BigDecimal result = initialValue.divide(divider, 2, RoundingMode.HALF_UP); 
System.out.println(initialValue + "/" + divider+" = "+result); 
BigDecimal retriveInitialValue = result.multiply(divider); 
System.out.println(result + " * " + divider+" = "+retriveInitialValue); 

} 
} 

출력 내가 무엇입니까
193/3 = 64.33어떻게 증식 및 자바 BigDecimal를 나눈 후 정확한 값을 얻을 수

64.33 * 3 = 192.99

내가 무엇을 기대 193/3 = 64.33

64.33 * 3 = 193

+1

당신은 당신이 할 수있는 당신의 중간 결과를 반올림하면 ' 최종 결과는 너는 무엇을 기대 하느냐! – bobbel

+3

왜'64.33 * 3'이'193'과 같을까요? –

+0

@GabrielNegut 선생님, 저의 의도는 초기 value.plz 도움말을 얻는 것입니다 – LMK

답변

0
org.jscience.mathematics.number.FloatingPoint initialValue = org.jscience.mathematics.number.FloatingPoint.valueOf("145.123456789"); 
org.jscience.mathematics.number.FloatingPoint divideWith = org.jscience.mathematics.number.FloatingPoint.valueOf("3"); 
org.jscience.mathematics.number.FloatingPoint result = initialValue.divide(divideWith); 
System.out.println(result.doubleValue()); 
org.jscience.mathematics.number.FloatingPoint finalResult = result.times(divideWith); 
System.out.println(finalResult.doubleValue()); 
1

당신이 어떤 공을 구현할 때까지,이 결과를 얻을 수 없다Rational은 분자와 분모를 포함합니다. 모든 계산은 어느 정도의 정밀도로 이루어집니다. 또한 가까운 정수를 얻기 위해 반올림 할 수도 있습니다.

+0

+1 Rational 힌트 – LMK

0

변경이 라인 :

BigDecimal retriveInitialValue = result.multiply(divider); 

...에 ...

BigDecimal retriveInitialValue = result.multiply(divider).setScale(0, RoundingMode.HALF_UP); 

출력

64.33 * 3 = 193 
+0

선생님,하지만 initialValue가 194라면 작동하지 않습니다 – LMK

+0

@latifmohammadkhan 죄송합니다. 내 답변에 오타가 있습니다. 이제는 반올림 모드를 수정했습니다. – Mena

+0

initialValue가 194.65이면 작동하지 않습니다. :( – LMK