문제

"10364055.81"과 같은 소수점 번호를 나타내는 데이터 유형.

Double을 사용해 보았을 때 :

double d = 10364055.81;

그러나 숫자를 인쇄하려고 할 때 그 표시는 "1.036405581E7", 내가 원하지 않는.

bigdecimal을 사용해야합니까? 그러나 그 표시는 그다지 나타납니다 10364055.81000000052154064178466796875. 값을 그대로 표시하는 데이터 유형이 있습니까? 또한 숫자는 예를 들어 취한 것보다 클 수 있습니다.

BTW, BigDecimal Effect를 사용하여 응용 프로그램의 성능을 사용합니까 ?? 나는 이것을 거의 모든 DTO에서 사용할 수 있습니다.

도움이 되었습니까?

해결책

당신은 bigdecimal을 사용해야합니다 - 그러나 문자열 생성자를 사용하십시오, EG :

new BigDecimal("10364055.81");

당신이 통과하는 경우 double Bigdecimal에서 Java는 두 배를 먼저 만들어야합니다. 복식은 대부분의 소수점 분수를 정확하게 나타낼 수 없으므로 IT 하다 값을 만듭니다 10364055.81000000052154064178466796875 그리고 그 다음에 그것을 Bigdecimal 생성자에게 전달합니다. 이 경우 Bigdecimal은 실제로 둥근 버전을 의미한다는 것을 알 방법이 없습니다.

일반적으로 말하자면, 비 스트링 생성자를 Bigdecimal의 생성자를 사용하는 것은 클래스의 모든 혜택을받지 못한다는 경고로 간주되어야합니다.

편집하다 - 당신이하고 싶은 일을 정확하게 다시 읽는 것을 바탕으로, 나의 초기 주장은 아마도 너무 강할 것입니다. Bigdecimal은 십진수 값을 정확하게 표현해야 할 때 좋은 선택입니다 (돈 취급은 명백한 선택이 되십시오. 5.99 * 백만 백만을 원하지 않습니다. 5990016.45 예를 들어.

하지만 저장된 숫자에 대해 걱정하지 않으면 내부적 당신이 입력 한 10 진수 문자와는 매우 다른 값으로, 같은 형식으로 다시 인쇄하고 싶다면 다른 사람들이 말했듯이 NumberFormat (이 경우, new DecimalFormat("########.##"))는 두 배를 멋지게 출력하기 위해 트릭을 수행하거나 string.format 똑같은 일을 할 수 있습니다.

성능에 관해서는 - 큰 비도체는 프리미티브를 사용하는 것보다 자연스럽게 느리게됩니다. 그러나 일반적으로 프로그램의 대다수가 수학적 조작과 관련이 없다면 실제로 속도 차이를 알지 못할 것입니다. 그것은 당신이 모든 빅 imals를 사용해야한다고 말하는 것이 아닙니다. 그러나 오히려, 당신이 평범하게 실현하기 어렵거나 불가능한 그들의 특징으로부터 진정한 혜택을 얻을 수 있다면 doubles, 그런 다음 이론적으로 소개하는 소형 성능 차이를 땀을 흘리지 마십시오.

다른 팁

숫자가 표시되는 방법 별개의 숫자가 저장되는 방식으로부터.

보세요 십진법 이중 (또는 플로트 등) 일 때 숫자를 표시 할 수있는 방법을 제어합니다.

BigDecimal을 선택하면 Double (또는 그 반대로)에는 장단점이 있으며 요구 사항에 따라 다릅니다. 보다 여기 더 많은 정보를 위해서. 요약에서 :

요약하면, 원시 성능과 공간이 가장 중요한 요소 인 경우 원시적 부동 소수점 유형이 적절합니다. 소수점 값을 정확하게 표현 해야하는 경우, 고정밀 계산이 필요하거나 반올림의 미세 제어가 필요합니다. Bigdecimal만이 필요한 기능을 갖습니다.

이 숫자를 저장하기에 두 배가 충분합니다. 문제가 인쇄하거나 문자열에 넣을 때 형식이 마음에 들지 않으면 숫자 format을 사용할 수 있습니다. http://java.sun.com/javase/6/docs/api/java/text/numberformat.html

System.out.printf ()와 함께 Double 및 Display를 사용할 수 있습니다.

double d = 100003.81;
System.out.printf("%.10f", d);

.10F- 정밀도가 10 인 이중을 의미합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top