왜 Double일까요?음수가 아닌 MIN_VALUE
왜 그런지는 누가 좀 밝혀줄 수 있나요?Double.MIN_VALUE
Doubles가 취할 수 있는 최소값이 아닐까요?이것은 양의 값이고, Double은 물론 음수일 수 있습니다.
왜 그것이 유용한 숫자인지 이해는 하지만, 그것은 매우 의도적이지 않은 이름처럼 보인다, 특히 비교해보면Integer.MIN_VALUE
...라고 부른다Double.SMALLEST_POSITIVE
또는MIN_INCREMENT
또는 비슷한 것이 더 명확한 의미를 가질 수 있습니다.
또한 Doubles가 취할 수 있는 최소값은 얼마입니까?그런가요?-Double.MAX_VALUE
의사들 말로는 안 하던데
IEEE 754 포맷에는 부호용으로 예약된 비트와 크기를 나타내는 나머지 비트가 있습니다.즉, origo 주위에 "대칭"이 있음을 의미합니다(음수 값이 하나 더 있는 Integer 값과 반대).따라서 최소값은 단순히 최대값과 동일하며 부호비트가 변경되어 있습니다.따라서 네,-Double.MAX_VALUE
를 사용하여 나타낼 수 있는 최소의 실제 수치입니다.double
.
내 생각엔Double.MAX_VALUE
최대 규모로 보여져야 하며, 이 경우 단순히 단순히 쓰는 것이 말이 됩니다.-Double.MAX_VALUE
또, 그 이유도 설명됩니다.Double.MIN_VALUE
최소 양의 값입니다(가능한 최소 크기를 나타내기 때문에).
하지만 확실히, 나는 그 이름이 약간 오해를 불러일으킨다는 것에 동의한다.뜻에 익숙해지다Integer.MIN_VALUE
저도 그걸 읽고 조금 놀랐어요.Double.MIN_VALUE
나타낼 수 있는 최소 절대값입니다.아마도 그들은 그것이 단순하기 때문에 최소한의 가능한 값을 나타내는 상수를 갖는 것이 불필요하다고 생각했을 것이다.-
에서 떨어져MAX_VALUE
:-)
(주의:Double.NEGATIVE_INFINITY
하지만 '특별한 경우'로 간주되고 실제 수치를 나타내지 않기 때문에 무시하겠습니다.)
여기 그 주제에 대한 좋은 텍스트가 있습니다.
이러한 상수는 기호와 아무런 관련이 없습니다.이것은 부호, 지수 및 Mantissa의 세 가지 부분을 합친 것으로 간주하는 경우에 더 적합합니다.두 배로.MIN_VALUE는 실제로 지수가 0으로 플러시가 발생하기 전에 최소값일 때 Mantissa가 가정할 수 있는 가장 작은 값입니다.마찬가지로 MAX_VALUE는 무한대로 플러시가 발생하기 전에 지수가 최대값일 때 Mantissa가 가정할 수 있는 가장 큰 값으로 이해할 수 있습니다.
이들 2개의 알기 쉬운 이름은 최대 절대값(verbositiy의 경우 0이 아닌 값을 추가함)과 최소 절대값(verbositiy의 경우 non-infinity를 추가함)입니다.
상세한 것에 대하여는, IEEE 754(1985) 표준을 참조해 주세요.개정된 (2008)버전이 있습니다만, Java에 의해서도 지원되지 않는 포맷이 더 많이 도입되고 있습니다(엄밀히 말하면 Java는 다른 많은 고급 언어와 마찬가지로 IEEE 754 1985의 일부 필수 기능을 지원하지 않습니다).
헷갈리는 이름은 가장 작은 양수로 정의되는 C로 거슬러 올라갈 수 있을 것 같습니다.
를 사용해야 -Double.MAX_VALUE
C에서 가장 작은 플로트를 얻으려면 를 사용해야 합니다.
은 '''입니다.Double.NEGATIVE_INFINITY
래그 that thatDouble.MIN_VALUE
한 것은 .Double
.
이중은 부동 소수점 숫자이므로 가장 큰 숫자(낮은 정밀도) 또는 가장 가까운 숫자(높은 정밀도)만 가질 수 있습니다.
, 이 값을 사용할 수 .-Double.MAX_VALUE
.
부동 소수점 숫자의 경우 정확한 범위가 없기 때문에 정밀도가 중요합니다.
/**
* A constant holding the smallest positive nonzero value of type
* <code>double</code>, 2<sup>-1074</sup>. It is equal to the
* hexadecimal floating-point literal
* <code>0x0.0000000000001P-1022</code> and also equal to
* <code>Double.longBitsToDouble(0x1L)</code>.
*/
하지만 더 좋은 이름이 붙었어야 했다는 것에 동의합니다:)
서류에 나와 있는 것처럼
Double.MIN_VALUE는 2^(-1074) 유형의 가장 작은 양의 비제로 값을 유지하는 상수입니다.
여기서 비결은 부동 소수점 숫자 표현에 대해 말하는 것입니다.더블 데이터 타입은 2배 정밀도의 64비트 IEEE 754 부동 소수점입니다.부동소수는 1,000,000,000 ~ 0.0000000000000001 사이의 숫자를 쉽게 나타내며, 스케일 양단에서 정밀도(자릿수)를 최대화합니다(자세한 내용은 이 항목을 참조하십시오).
항상 양수인 가수에는 부동 소수점 숫자의 유효 자릿수가 포함됩니다.지수는 가수와 부호를 곱해야 하는 기수의 양수 또는 음수를 나타냅니다.부동소수점 값을 얻기 위해 4개의 구성요소를 다음과 같이 조합합니다.
MIN_VALUE는 변위수가 나타낼 수 있는 최소값이라고 생각합니다.부동소수점 표현의 최소값은 그것을 사용하여 나타낼 수 있는 최소 크기이기 때문에 (이 혼동을 피하기 위해 더 좋은 이름을 사용할 수 있었습니다.)
123 > 10 > 1 > 0.12 > 0.012 > 0.0000123 > 0.000000001 > 0.000000001
아래는 참고 사항입니다.
배정도 부동소수는 2^-1074~2^1023의 2,098의 거듭제곱을 나타낼 수 있습니다.2의 탈규격화 파워는 2^-1074~2^-1023, 2의 정규화 파워는 2^-1022~2^1023이다.이것과 이것을 참고하세요.
언급URL : https://stackoverflow.com/questions/3884793/why-is-double-min-value-in-not-negative
'source' 카테고리의 다른 글
Java 8 Stream을 사용하여 일부 클래스 속성에서 목록을 가져오려면 어떻게 해야 합니까? (0) | 2022.08.17 |
---|---|
세트에서 요소 가져오기 (0) | 2022.08.16 |
Vue js 2를 사용하여 구성 요소 하위 구성 요소 체인에서 이벤트를 버블링하려면 어떻게 해야 합니까? (0) | 2022.08.16 |
vuex를 사용하여 API에서 데이터를 가져오는 모범 사례 (0) | 2022.08.16 |
Java에서 BigDecimal 변수 == 0인지 확인하는 방법 (0) | 2022.08.16 |