本文介绍了如何找到最简单的、人类可读的浮点型字符串,该字符串在转换回浮点型时会产生相同的字节?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于大多数数字,我们知道任何浮点值都会有一定的精度误差。对于32位浮点数,这将计算出大约6个有效数字,在您可以预期看到不正确的值之前,这些数字将是准确的。

我正在尝试存储一个人类可读的值,该值可以读入并重新创建位准确的序列化值。

例如,值555.5555被存储为555.55548095703125;但是当我序列化555.55548095703125时,理论上我可以将它序列化为(555.5554504395, 555.555511475)(独占)范围内的任何内容,并且仍然得到相同的字节模式。(实际上,这可能不是准确的范围,我只是不知道目前更准确地计算它有什么价值。)

我想要的是找到值的最易读的字符串表示形式--我想这将是最少的数字--它将被反序列化为相同的IEEE浮点数。

推荐答案

这个问题最初是在1990年用创建者称为"龙"的算法解决的:https://dl.acm.org/citation.cfm?id=93559

去年有一种更现代的技术,叫做"龙"(日语中"龙"的意思),速度要快得多:https://dl.acm.org/citation.cfm?id=3192369

库的GitHub在此:https://github.com/ulfjack/ryu

根据他们的自述文件:

这篇关于如何找到最简单的、人类可读的浮点型字符串,该字符串在转换回浮点型时会产生相同的字节?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 01:37