2017-02-20 3 views
0

1.0f/2.0f로 나눈 값은 0.5입니다.눈금보다 작은 정밀도 값을 가진 경우 제로입니다.

정밀도 5 (0.50000)를 원했습니다. BigDecimal를 사용해 스케일을 5로 설정 합니다만, 값은 여전히 ​​0.5로서 출력됩니다.

BigDecimal val = 새로운 BigDecimal (1.0f/2.0f);
BigDecimal tt = val.setScale (5); System.out.println (tt.doubleValue);

스케일을 설정하고 0.50000으로 만드는 방법. 정확도 값이 눈금보다 작 으면 패드를 0으로 추가하십시오.

예를 들어이 경우 1/2은 항상 0.5 (정밀도는 1)이고 높은 정밀도 (예 : 5)를 원한다면 어떻게해야합니까? 당신이 더블을 사용하려는 경우 또는, 다음 사용할 수

+1

'당신은 그냥 변환 tt.doubleValue''tt'. –

+0

나에게 너무 늦은 밤이었습니다. 죄송합니다 – user3491141

답변

1

는 그냥 BigDecimal를

BigDecimal val = new BigDecimal(1.0f/2.0f); 
    BigDecimal tt = val.setScale(5); 
    System.out.println(tt); 

를 인쇄 알려 주시기 바랍니다

System.out.printf("%.5f%n", tt.doubleValue()); 
0

사용 DecimalFormat :

BigDecimal a = new BigDecimal(1/2.0); 
BigDecimal value = a.setScale(5, BigDecimal.ROUND_HALF_EVEN); 
System.out.println(value); 

출력은 : 어떠한 특정한 형식없이 다시 숫자로

0.50000 
+0

귀하의 산출량은 어디에서 발생합니까? 그게 OP가 –

+0

@ SkaryWombat'System.out.println (값);을 가지고있는 문제입니다. – haifzhan

+0

그래서 3 번 편집 후 내 답변과 동일합니다. –