背景
IEEE 754双精度浮点格式是一种表示64位实数的方法。看起来如下:
![]()
实数按以下方式n转换为double:
s如果数字为正,则符号位为0,否则为1。- 的绝对值
n以22**y * 1.xxx的幂乘以base的形式表示。 - 指数
e是y(2的幂)减去1023。 - 分数
f是xxx部分(基数的分数部分),采用最高有效52位。
相反,位模式(由sign s,exponent e和fraction 定义f,每个都是整数)表示数字:
(s ? -1 : 1) * 2 ** (e - 1023) * (1 + f / (2 ** 52))
挑战
给定一个实数n,将其double表示形式的52位小数部分输出n为整数。
测试用例
0.0 => 0
1.2 => 900719925474099 (hex 3333333333333)
3.1 => 2476979795053773 (hex 8cccccccccccd)
3.5 => 3377699720527872 (hex c000000000000)
10.0 => 1125899906842624 (hex 4000000000000)
1234567.0 => 798825262350336 (hex 2d68700000000)
1e-256 => 2258570371166019 (hex 8062864ac6f43)
1e+256 => 1495187628212028 (hex 54fdd7f73bf3c)
-0.0 => 0
-1.2 => 900719925474099 (hex 3333333333333)
-3.1 => 2476979795053773 (hex 8cccccccccccd)
-3.5 => 3377699720527872 (hex c000000000000)
-10.0 => 1125899906842624 (hex 4000000000000)
-1234567.0 => 798825262350336 (hex 2d68700000000)
-1e-256 => 2258570371166019 (hex 8062864ac6f43)
-1e+256 => 1495187628212028 (hex 54fdd7f73bf3c)
您可以使用此C参考来检查其他数字,该C参考使用位字段和联合。
需要注意的是预期的答案是一样的+n,并-n为任意数量n。
输入输出
适用标准规则。
接受的输入格式:
- 浮点数,
double内部至少具有精度 - 以十进制表示的数字的字符串表示形式(您无需支持科学计数法,因为您可以使用
1000...00或0.0000...01作为输入)
对于输出,最低有效位的舍入误差是可以容忍的。
获奖条件
这是代码高尔夫球,因此每种语言中的最低字节为准。