【发布时间】:2020-10-30 18:44:30
【问题描述】:
我目前正在尝试更改 32 位浮点值,但是它的实现方式仅接受 UI32 整数值,并且会以某种方式将其转换(无法更改此转换)为浮点值并显示它。例如,我可以传入41000,它会输出/显示0.0201,尽管它最多存储9 个小数位(比那个多3 个)。最大值和最小值在 .csv 文件中定义,最大值为131070(显示为0.0627),最小值为0。默认值为32767,显示为0.0157。
我已经使用在线转换器测试了十进制/整数浮动,但它似乎不起作用(值保持不变)。在达到浮点值之前,它看起来可能不止一次转换。
我的问题是这里发生了什么样的转换,还有什么我没有考虑到的吗?
感谢任何建议!
编辑:在 .csv 文件(包含这些值)中,我还发现了一个比例数字列,这些值的比例为 4.79*10^-7,可用于进行转换,而不是整数到浮点数的转换
【问题讨论】:
-
可能是十六进制
-
什么意思?就像从十进制转换为十六进制然后再转换为浮点?编辑:对此进行了测试并得到了
5.74532e-41的41000,这是很遥远的事情。也许我自己读错了? -
你有那个转换函数的源代码或文档吗?还是您尝试对其进行逆向工程?
-
这里没有足够的信息来回答。三个给定的样本(省略越界 1015066128)是非线性的(通过四舍五入可以解释),因此转换器不仅仅是乘以比例(对于定点格式)。样本不符合正常的浮点格式(例如,32767 将转换为接近两倍的幂,例如 1、1½、1¾ 等,无论指数和有效数字字段在格式中的位置,但它没有——它略高于 1/64)。我们需要更多示例、例程名称、文档等。
-
嗨,埃里克。我用这些值找到的比例更新了我的问题。遗憾的是,这些是我拥有的此类实现的唯一示例,遗憾的是,没有关于此或我正在使用的任何代码的文档(这是 3-4 年前开发的代码的一部分,所有开发人员都离开了) .
标签: floating-point binary hex converters