Floating point 浮点精度。如何获得最大范围的值

Floating point 浮点精度。如何获得最大范围的值,floating-point,Floating Point,我正在深入研究浮点值的问题。 我在网站上看到了精彩的页面 我读过很多帖子。 我得出了一个结论,我想知道这是否正确 在你能得到多少精度和你的数字的整数部分有多大之间有一个折衷 如果确定我只需要2个小数点的精度,我可以存储和检索的值的范围将达到32767,99(至少这是使用上述转换器进行的经验测试得出的)。相反,如果我完全放弃小数,我可以得到16777216。 有两个小数我可以有3276800个唯一值,没有小数我可以存储多达16777217个唯一值,这是正确的吗 它可能会被重新表述为:考虑到我的兴

我正在深入研究浮点值的问题。 我在网站上看到了精彩的页面

我读过很多帖子。 我得出了一个结论,我想知道这是否正确

在你能得到多少精度和你的数字的整数部分有多大之间有一个折衷

如果确定我只需要2个小数点的精度,我可以存储和检索的值的范围将达到32767,99(至少这是使用上述转换器进行的经验测试得出的)。相反,如果我完全放弃小数,我可以得到16777216。 有两个小数我可以有3276800个唯一值,没有小数我可以存储多达16777217个唯一值,这是正确的吗

它可能会被重新表述为:考虑到我的兴趣是存储范围最广的唯一值而没有错误,考虑到我必须使用浮点,那么说没有小数是正确的吗


编辑:我写的关于上升到32767,99的内容是错误的,我通过更多的实证测试看到了这一点。因此,32767.2存储为32767.19921875。在实践中,问题变成了:如果我必须使用浮点数,而我承受不起这些错误,那么如果没有小数,我可以正确地表示0到16777216之间的值,这是正确的吗?

您想要相对精度还是绝对精度的2个小数?在后一种情况下,为什么必须使用浮动?在这种情况下,定点将是一个更好的选择。我很高兴拥有最广泛的数字范围,我需要找到让我拥有它的尺度。如果我去掉小数,我可以得到5倍于两个小数的值。我肯定会浮动,因为我使用的3d引擎就是这样工作的。我想我不理解你的问题。如果一定要使用,则相对精度为24位(相当于略大于7位小数),总范围约为+/-3.4*10^38。你可能有一个。我看到的是,如果我像使用整数一样使用浮点数,我有一个从0到16777216的可能值范围。没有错误,没有舍入,这是精确的值。如果我使用小数,我总是以某种错误结束,这意味着我没有使用没有小数的浮点数那么多的唯一值。如果我存储一个或多或少带有小数点的数字,我总是会出现一些错误,因此62798.2实际上存储为62798.19921875。顺便说一句,我编辑了原始帖子,因为我也得到了值低于32767,99的错误。换句话说,对于小数点后有两位数字的所有数字,从0.00到131072.00,原始数字可以通过简单的转换从二进制32中恢复。但是,对这样的二进制数32进行运算通常不会产生与对十进制数进行运算相同的结果。浮点不是设计用来“存储”十进制数的,您应该避免以这种方式使用它。