Wie konvertiere ich in Java ein Double in sein exaktes Bruchäquivalent?Java

Java-Forum
Anonymous
 Wie konvertiere ich in Java ein Double in sein exaktes Bruchäquivalent?

Post by Anonymous »

Technisch gesehen benötige ich eine Methode, die eine IEEE 754-Binär64-Zahl in ein reduziertes Verhältnis zweier BigIntegers umwandelt, das mathematisch genau den gleichen Wert darstellt. Die Methode muss keine Werte verarbeiten, die unendlich oder NaN sind, aber sie muss Subnormale und vorzeichenbehaftete Nullen verarbeiten. Da das IEEE 754-Binär64-Zahlenformat die Darstellung irrationaler Zahlen nicht unterstützt, ist diese Aufgabe theoretisch möglich.

Hier einige Beispielwerte:
  • 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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post