【发布时间】:2015-01-31 06:35:34
【问题描述】:
从技术角度来说,我需要一种方法,将 IEEE 754 binary64 number 转换为两个 BigInteger 的缩减比率,这两个 BigInteger 在数学上表示完全相同的值。该方法不需要处理infinite 或NaN 的值,但它确实需要处理subnormals 和signed zeros。由于 IEEE 754 binary64 数字格式不支持表示无理数,所以这个任务理论上是可以的。
以下是一些示例值:
- 0.0 = 0 / 1
- -0.0 = 0 / 1
- 0.5 = 1 / 2
- 0.1 = 3602879701896397 / 36028797018963968
- 1 /(双)3 = 6004799503160661 / 18014398509481984
- Double.MIN_NORMAL = 1/2 ^ 1022 = 1/44942328371557897693232629769725618340449424473557664318357520289433168951375240783177119330601884005280028469967848339414697442203604155623211857659868531094441973356216371319075554900311523529863270738021251442209537670585615720368478277635206809290837627671146574559986811484619929076208839082406056034304 LI>
- Double.MIN_VALUE = 1/2 ^ 1074 = 1/202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784 LI>
- Double.MAX_VALUE =(2 ^ 1024 - 2 ^ 971)/ 1 = 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368/1 LI>
【问题讨论】:
标签: java function math methods