Java, BigDecimal의 소수 부분 만 추출 하시겠습니까?
Java에서 저는 BigDecimal
클래스로 작업하고 있으며 코드의 일부에서는 분수 부분을 추출해야합니다. BigDecimal
의 소수점 뒤의 숫자를 얻는 데 도움이되는 내장 메서드가없는 것 같습니다 BigDecimal
.
예를 들면 :
BigDecimal bd = new BigDecimal("23452.4523434");
4523434
위에 표시된 숫자에서 추출하고 싶습니다 . 가장 좋은 방법은 무엇입니까?
나는 시도 할 것이다 bd.remainder(BigDecimal.ONE)
.
BigDecimal bd = new BigDecimal( "23452.4523434" );
BigDecimal fractionalPart = bd.remainder( BigDecimal.ONE ); // Result: 0.4523434
값이 음수이면 사용 bd.subtract()
하면 잘못된 십진수가 반환됩니다.
이것을 사용하십시오 :
BigInteger decimal =
bd.remainder(BigDecimal.ONE).movePointRight(bd.scale()).abs().toBigInteger();
그것은 반환 4523434
을 위해 23452.4523434
또는-23452.4523434
또한 분수 부분 오른쪽에 추가 0이 필요하지 않으면 다음을 사용하십시오.
bd = bd.stripTrailingZeros();
이전 코드 앞에.
다음은이 방법을 사용하는 대안입니다 remainder()
.
BigDecimal bd = new BigDecimal("23452.4523434");
BigDecimal fracBd = bd.subtract(new BigDecimal(bd.toBigInteger()));
또한 abs () 메서드를 사용하여 분수 부분이 양수인지 확인할 수 있습니다.
BigDecimal fracBd = bd.subtract(new BigDecimal(bd.toBigInteger())).abs();
음수 "-23452.4523434"로 숫자를 설정하더라도 "4523434"를 반환합니다.
BigDecimal d = BigDecimal.valueOf(23452.4523434);
BigInteger decimal = d.remainder(BigDecimal.ONE).movePointRight(d.scale()).abs().toBigInteger();
작동하지 않습니다 !!!
BigDecimal d = BigDecimal.valueOf(23452.4523434);
BigInteger decimal =
d.remainder(BigDecimal.ONE).movePointRight(d.scale()).abs().toBigInteger();
예를 들어 '0'으로 시작하는 소수 부분을 입력 할 때. '123.00456'. "00456"대신 "456"이 표시됩니다. 그것은 우리가 그것을 변환하기 때문에 발생합니다 .toBigInteger()
. 그리고 첫 번째 0은 방금 사라졌습니다 . .toString()
대신 을 사용 .toBigInteger()
하면 456.00000이 표시 됩니다.
그래서 내 조언은 이것을 사용하는 것입니다 .
BigDecimal fractPart = bd.remainder(BigDecimal.ONE);
StringBuilder sb = new StringBuilder(fractPart.toString());
sb.delete(0, 2);
String str = sb.toString();
그런 다음 str
원하는 방식으로 사용하십시오 .
참조 URL : https://stackoverflow.com/questions/10038749/java-extract-just-the-fractional-part-of-a-bigdecimal
'IT TIP' 카테고리의 다른 글
피어 투 피어 : 피어를 찾는 방법 (0) | 2020.12.25 |
---|---|
Func를 얻을 수 있습니까? (0) | 2020.12.25 |
자바 스크립트에서 긴 숫자를 축약 된 문자열로 변환합니다. (0) | 2020.12.15 |
AttributeError : Python에서 속성을 설정할 수 없습니다. (0) | 2020.12.15 |
Karma 실행 단일 테스트 (0) | 2020.12.15 |