猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
从指数和尾数创建浮点数
给定整数
exp
和
0<=sig<2^52
,我如何创建
exp
指数为 float64 且其有效位与(在 Go 中)的二进制表示相同的
sig
?
函数式编程
浏览 115
回答 1
1回答
烙印99
IEEE -754 标准定义了 Go 用于浮点数的浮点算法,例如float32and float64(就像几乎所有其他语言一样)。由于您的有效数字可能高达 52 位,显然它只能使用一个float64值来表示。双精度浮点格式float64中描述了值的内存布局(位)。这是一个值的位图float64(取自维基百科):你声称你有指数值和尾数(这是小数部分)。您可以使用简单的按位运算来构造浮点的 64 位值,如下所示:bits := exp<<52 | sig(注意:exp并且sig应该是类型uint64。如果不是,请使用类型转换。)一旦你有了这些位,你就可以使用math.Float64frombits()函数将它作为一个float64值来获取:f := math.Float64frombits(bits)请注意,内存布局的指数值不是您在计算数字值时必须使用的“直接”数字,而是:双精度二进制浮点数指数采用偏移二进制表示法编码,零偏移为1023;在 IEEE 754 标准中也称为指数偏差。因此,以上述双精度格式编码的数字计算如下:(-1)符号x 2 e-1023 x 1.分数
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Go
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续