나는 이것에 대해 조금 궁금해했습니다. Math.random()은 [0.0,1.0] 범위의 값을 제공합니다. 그렇다면 가장 큰 가치는 무엇일까요? 즉, 1.0에 가장 가까운 double 값이 1.0보다 작은 것은 무엇입니까?Java : Math.random() 최대 값 (2를 1보다 작음)
답변
자바하지만 아무 것도 볼 수 있었다 전에 1.0-Double.MIN_NORMAL
(308)에 소수점 이하 자릿수의 값을 출력해야 할 것이다 것은 64 비트를 IEEE-754 표현을 사용하기 때문에보다 작은 가장 가까운 수는 16 진수 표현에 이론적으로 3FEFFFFFFFFFFFFF
인 지수의 경우 0, 지수의 경우 -1, 52 비트 유효 숫자는 1.9999999999999997입니다. 이것은 대략 0.9999999999999998
과 같습니다.
참조 : IEEE-754 Calculator.
두 배의 최소 양수 값은 Double.MIN_NORMAL
입니다. 따라서 1.0보다 작은 숫자는 1.0-Double.MIN_NORMAL
입니다.
Double.MIN_NORMAL
2 -1022 동일하므로 응답이 여전히 1.0에 매우 근접이다. 당신이 9
이상하게도, System.out.println에'1.0 - Double.MIN_NORMAL == 1.0'을 넣을 때, 나는 사실이됩니다. 하지만 System.out.println에서 0.9999999999999999를 감싸면 false가됩니다. 그렇다면 0.9999999999999999가 가장 가까운 이중 값입니까? – Justin
Hum ... 아닙니다. 따라서 MIN_NORMAL은 _closest 값을 0으로 적용합니다. 이는 IEEE-754 값에서 가능한 가장 작은 오류를 정렬합니다. 그러나 당신이 1쪽으로 움직 였기 때문에, 정밀도의 일부가 손실됩니다! – mjv
'System.out.println (Double.MinNormal)'은 2.2250738585072014E-308입니다. 꽤 작습니다. – Justin
원하는 번호는 Math.nextAfter(1.0, -1.0)
에 의해 반환됩니다.
기능의 이름은 다소 틀린 이름입니다. Math.nextAfter(a, 1.0)
초과 a
인 적어도 두 값을 반환 (즉, 다음 a
후의 값), 및 리턴 Math.nextAfter(a, -1.0)
(a
전에 즉, 값 ) 미만이다 a
최대 값.
참고 : 다른 포스터는 1.0-Double.MIN_NORMAL
입니다. 그건 틀렸어요. 1.0-Double.MIN_NORMAL
은 정확하게 1.0과 같습니다.
- 1. static Math.random change java
- 2. Math.Random() Java. 숙박 상수
- 3. Java Math.random() 얼마나 무작위입니까?
- 4. MySQL 부울 값 작음
- 5. Codeigniter 양식 유효성 검사가 필드 1보다 두 번째 필드보다 작음
- 6. 숫자가 아닌 숫자의 Math.random
- 7. Java : 변수의 최대 값 얻기
- 8. 지수화 1보다
- 9. 1에서 2 사이의 숫자 생성 java Math.random()
- 10. SQL 하위 쿼리가 1보다 큰 값
- 11. svm 예측 파일에서 1보다 큰 값
- 12. Java의 Math.random()
- 13. 글꼴 크기를 1보다 작게 만들기 Java GUI
- 14. Java 배열의 최소 및 최대 값
- 15. Java : 절대 값의 최대 값 및 최소값
- 16. 어떻게 최대 값 (proj_id) + 1로 Java
- 17. 왜 (int) (Math.random() * 0xFFFFFFFF)가 0입니까
- 18. : 파이썬 pymongo에서 값 2를, MongoDB를
- 19. 버퍼가 작음
- 20. 창 최대 최대 값
- 21. 대화 형 (그러나 작음) Java 용 쉘
- 22. AS3 장면에서 Math.random 호출?
- 23. MySQL 테이블 값 1이 테이블 값 2보다 작음
- 24. 최대 값
- 25. 최대 값
- 26. 최대 값
- 27. xslt 2를 사용한 다중 값 그룹화
- 28. unordered_set - 매우 작음 max_bucket_count
- 29. 자바에서 (int) (Math.random())과 Math.random()의 차이점은 무엇입니까?
- 30. Math.random not working
약 0.9999999999999999? 그것은 자릿수가 같지만 끝에 8 대신 9를가집니다. 내가'System.out.println (0.9999999999999999 - 0.9999999999999998)'일 때, 나는 다음을 얻는다. 1.1102230246251565E-16 – Justin
@gangqinlaohu 마지막 숫자가 정확하지 않다. 번호를 얻으려면 IEEE-754 계산기에서 얻은 숫자를 잘라 냈습니다 (대답의 링크 참조). 8 다음의 다음 숫자도 8이므로 반올림을 적용하면 결과는 0.9999999999999999가됩니다. – dasblinkenlight
0.9999999999999998이 잘 리므로 0.9999999999999999가 0.9999999999999998보다 가깝습니다. 따라서 가장 가까운 Double은 0.9999999999999999입니다. – Justin