python frexp和ldexp函数将浮点数拆分为尾数和指数.有人知道这个过程是暴露实际的浮动结构,还是需要python来进行昂贵的对数调用?
如果我们有10位浮点数.4位=指数,5位是分数.如何计算偏差?
是2 ^ 4 = 16-1 = 15?
那是对的吗?
我需要从IMU输出十六进制数据流到lat long和height值.
数据以双精度十六进制字符串形式出现,我需要将它们输出为十进制值.
我尝试了几个打包和解压缩值,但最终除了编写自己的函数之外无法找到解决方案.
有没有办法翻译这个双精度64位十六进制字符串:
"4044F33333333333"
Run Code Online (Sandbox Code Playgroud)
进入这个小数:
41.900000000000000
Run Code Online (Sandbox Code Playgroud)
使用打包和解包功能?
有没有能够处理IEEE 754号码的图书馆?
我最近开始使用Julia,我发现了bits函数,它返回其数字参数的位串表示.例如:
julia> bits(1.0)
"0011111111110000000000000000000000000000000000000000000000000000"
Run Code Online (Sandbox Code Playgroud)
但是,在使用此功能时,我惊讶地发现bits返回非常不同的位串1.0和2.0:
julia> bits(1.0)
"0011111111110000000000000000000000000000000000000000000000000000"
julia> bits(2.0)
"0100000000000000000000000000000000000000000000000000000000000000"
Run Code Online (Sandbox Code Playgroud)
我原以为这两个值是相似的......
那些位是什么意思?我含糊地回忆起有关编码指数的比特(来自我的数值分析类),但我真的不记得了,我没有设法在网上找到一个好的描述......
我正在尝试将64位十六进制数字转换为PHP中的浮点数。
40F82C719999999A
Run Code Online (Sandbox Code Playgroud)
如果在http://babbage.cs.qc.cuny.edu/IEEE-754.old/64bit.html的IEEE-754浮点转换页面中运行该命令,它将转换为:
99015.100000000000
Run Code Online (Sandbox Code Playgroud)
我要寻找的是哪个号码。但是我无法在PHP中获得此数字。我试过使用pack()和unpack()的各种组合,但是我离哪里都不远。:(
给定计算n IEEE 754双精度浮点数x 0,x 1,...,x n - 1的算术平均值的任务,是否更精确
(ksum i x i)/ n
(即首先进行所有x i的Kahan和,然后除以n)或
ksum i(x i/n)
(即首先将x i除以n然后进行Kahan求和)?
我自己的测试(在[0,1)中均匀分布的随机数和在0以σ= 1为中心的整个浮点数范围内的正态分布数字)是不确定的,表明两者都非常精确,但我选择的测试数据可能特别差.
我使用c ++来计算各种类型的特殊函数(例如Lambert函数,用于评估反演的迭代方法等).在许多情况下,直接使用尾数和指数有明显更好的方法.
我找到了许多答案如何提取尾数和指数部分,但是所有这些都只是"学术案例,计算速度不是很快",对我来说有点无用(我用尾数和指数操作的动机是改进计算速度).有时我需要调用一些特定功能大约十亿次(非常昂贵的计算),所以每个节省的计算工作都很好.并且使用将尾数作为double的"frexp"不太合适.
我的问题是(对于带有IEEE 754浮点的c ++编译器):
1)如何读取浮点数/双精度的尾数的具体位?
2)如何将整个尾数读入float/double的整数/字节?
3)与指数1),2)相同的问题.
4)与写入1),2),3)相同的问题.
如果我直接使用尾数或指数,我的动机是更快的计算.我想必须有一个非常简单的解决方案.
在Javascript中(在Chrome devtools控制台面板和Node.js的v0.12.5),我得到了这两个大数的产品不正确的答案:
输入: 41962049 * 1827116622
输出: 76669557221078480
在C++和C#中,76669557221078478在将表达式转换为64位int时,我得到了正确的答案.
我假设这是一个整数溢出问题,但我当然可能是错的.
有没有办法在不使用像BigInteger这样的外部库的情况下在Javascript中为大数字获取准确的算术产品?这适用于不允许使用其他库的在线类.
谢谢你的帮助.
编辑:感谢解释如何实际上不是整数溢出,Patrick Roberts!很有用.
编辑2:jfriend00,我认为这个问题与你链接的问题不同,因为我试图弄清楚是否有办法解决JS的局限而不依赖于外部库.您在评论中提供的答案有助于回答我的问题,谢谢!
考虑:
x是正整数,其最大值不可能高于约10,000,000.
y是一个小整数,> = 0,最大值约为5; 如有必要,我可以设置上限.
计算z,然后四舍五入到最接近的整数,中间的情况向上舍入.我对数字正确答案向上舍入的情况感兴趣,但双精度754给出了"错误"答案,然后向下舍入.因此,换句话说,数值正确的结果具有> = 0.5的小数部分,但实际结果的小数部分<0.5.
我正在使用的语言不允许我访问FPU设置,因此我只能使用默认设置(主要是x86_64,Linux和Windows).
我是否必须接受某些答案是"错误的",或者我可以对x和y设置一些限制,以保证给出所需的答案?或者是否有另一种计算方法可以在舍入后给出正确的答案?如果有必要的话,我也可以改变z如何舍入的定义,如果我能真正对结果做出保证的话.
前言:
我目前正在尝试解密旧的二进制格式(在日本80年代中期到80年代后期开发),该格式将浮点值存储在4字节块中,而不是用IEEE754标准转换.我有一个程序为我转换值,所以我可以操纵二进制文件来更改存储的值并查看结果,但我无法弄清楚如何解释它们.
我确实解释了4个字节的每个可能的排列作为IEEE浮点数,但没有一个是正确的,所以我可以说它不是字节序问题,也不是我知道或可以在互联网上找到的浮点数表示.
我试图调查我使用的程序的程序集,但是我的汇编程序技能不够好,无法从中获取任何东西.
这里有些例子:
Actuall问题:
在IEEE754标准之外/之前是否还有其他(旧的)32位浮点表示?
floating-point binaryfiles data-conversion binary-data ieee-754