0
사용자의 입력을 EditText
에서 Big Decimal
으로 변환하려고합니다. 그러나, 나는 그것을하는 데 문제가 있습니다. 내 결과가 변환되지 않습니다. 예를 들어, 계산이 완료되면 번호는 12.345678이됩니다. 메소드 round()
을 호출 한 후, 반올림 된 값은 여전히 동일합니다. 내가 뭔가 잘못하고 있는거야? 나는 당신이round
의 결과를 사용하지 하고 돈안드로이드 - 큰 십진수로 double 변환 문제
된 .java
double totalPrice = Double.parseDouble(price.getText().toString());
int position = spinner.getSelectedItemPosition();
name = name1.getText().toString();
if(position == 0)
{
totalPrice = totalPrice * 1.07;
System.out.println(totalPrice);
}
else
{
totalPrice = (totalPrice * 1.1)*1.07;
System.out.println(totalPrice);
}
round(totalPrice, 2, BigDecimal.ROUND_HALF_UP);
}
}
public static double round(double unrounded, int precision, int roundingMode)
{
BigDecimal bd = new BigDecimal(unrounded);
BigDecimal rounded = bd.setScale(precision, roundingMode);
return rounded.doubleValue();
}
특히, Double.parseDouble을 사용하지 말고 get-go에서 새 BigDecimal (String)을 사용하십시오. –
존 - 감사합니다. 이제 작동합니다. 나는'totalPrice'가 새로운 값으로 자동 초기화 될 것이라고 생각했습니다. 루이 - 정보 주셔서 감사합니다. double 대신 BigDecimal을 사용하도록 변경했습니다. BigDecimal을 사용하는 것은 새로운 BigDecimal 피연산자를 선언 할 필요가있는 double보다 BigDecimal을 사용하는 것보다 조금 더 번거 롭습니다. 그러나 적어도 Jon이 지적한 것과 같은 문제는 피할 수 있습니다. – Hend