티스토리 뷰
개체를 사용해야하는 경우 (여러 가지 이유로 사용하지 않는 것이 좋습니다) 이렇게 할 수 있습니다.
Number a = 33;
Number b = 0.33;
Number d = a.doubleValue() / 100.0;
Number e = b.doubleValue() / 100.0;
그러나 실제로는 숫자에 대한 객체 만 사용해야합니다.
- 값은
null
- 예를 들어 일반 유형으로 사용하고 있습니다.
List<Double>
- 예를 들어 프리미티브가없는 유형을 사용하고 있습니다.
BigDecimal
개체가 아닌 복식을 사용해야합니다.
final int a = 33;
final double b = 0.33;
final double d = a / 100.0;
final Double e = b / 100.0;
-------------------Java에서는 int 와 같은 프리미티브 를 double로 캐스트 할 수 있지만 Integer 및 Double 과 같은 래퍼 클래스로 동일한 작업을 수행 할 수 없습니다 .
귀하의 예에서 33은 Integer로 자동 박싱되며 Double로 캐스팅 할 수 없습니다. 특정한 경우 다음과 같은 방법으로 예외를 피할 수 있습니다.
Object a = 33;
if(a instanceof Number) {
Double d = ((Number) a).doubleValue() / 100;
System.out.println(d);
}
그러나 문제를 해결하는 가장 좋은 방법은 없습니다. 기본 int 및 double 또는 해당 래퍼 Integer 및 Double을 사용하는 것이 좋지만 Object는 사용하지 않는 것이 좋습니다.
출처
https://stackoverflow.com/questions/39917295
댓글