Как преобразовать двойное число в его точный дробный эквивалент в Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как преобразовать двойное число в его точный дробный эквивалент в Java?

Сообщение Anonymous »

С технической точки зрения, мне нужен метод, который преобразует двоичное64-число IEEE 754 в уменьшенное соотношение двух больших целых чисел, которые математически представляют одно и то же значение. Методу не требуется обрабатывать значения, которые являются бесконечными или значениями NaN, но ему необходимо обрабатывать субнормальные значения и нули со знаком. Поскольку числовой формат IEEE 754binary64 не поддерживает представление иррациональных чисел, эта задача теоретически возможна.

Вот несколько примеров значений:
  • 0,0 = 0 / 1
  • -0,0 = 0 / 1
  • 0,5 = 1 / 2
  • 0.1 = 3602879701896397 / 36028797018963968
  • 1 / (double) 3 = 6004799503160661 / 18014398509481984
  • Double.MIN_NORMAL = 1 /2^1022 = 1/ 4494232837155789769323262976972561834044942447355766431835752028943316895137524 0783177119330601884005280028469967848339414697442203604155623211857659868531094 4419733562163713190755549003115235298632707380212514422095376705856157203684782 77635206809290837627671146574559986811484619929076208839082406056034304
  • Double.MIN_VALUE = 1/2^1074 = 1/ 20240225330731061835249534671891730704955664976414211835690135802743033956799534689 19603837014371244951870778643168119113898087373857934768670133999407385099215174242 76566361364466907742093216341239767678472745068562007483424692698618103355649159556 340810056512358769552333414615230502532186327508646006263307707741093494784
  • Double.MAX_VALUE = (2^1024 - 2^971) / 1 = 17976931348623157081452742373170435679807056752584499659891747680315726078002 85387605895586327668781715404589535143824642343213268894641827684675467035375 16986049910576551282076245490090389328944075868508455133942304583236903222948 165808559332123348274797826204144723168738177180919299881250404026184124858368 / 1


Подробнее здесь: https://stackoverflow.com/questions/272 ... nt-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»