今天,我了解了浮点数是如何表示二进制的。嗯,我能理解为什么IEE-754技术标准聪明地使用相对较少的位来存储大量的数字。我也明白为什么有时候用四个4位来表示每个符号是有用的(就像你可以做的一样,对吗?),当你想要精确的数字时。
总之,我的问题是,用两个整数“只是”存储浮点数字不是更方便吗?例如,您可以将逗号前的数字表示为34位整数,将逗号后面的数字表示为30位整数。那么你能写出任何数字在+-850亿和大约9个小数位数范围内,对吗?
与双精度浮点数相比,它仍然是一个相对较小的数字范围,但据我所知,它比Cobol方法好吗?
谢谢。
发布于 2014-07-05 16:48:55
浮点的优点是:
相反,定点数的范围很有限,只在有限的范围内精确,而且没有无穷大的特殊值,而不是A数。考虑这个计算来计算向量的长度:
return sqrt(vec.x * vec.x + vec.y * vec.y);即使最终结果符合,这种计算也可能溢出或下溢,因为sqrt的参数将有一个指数,大约是最终结果的两倍。这个问题通常并不重要,当使用浮点或双,因为他们的范围是如此巨大,但对于定点格式,这个问题很容易解决。假设有32.32个定点格式,很难计算短到70000个单位的向量的长度。
更糟糕的是,没有任何方便的方法表明计算已经溢出。
此外,定点数学没有硬件支持,这使得它在某些操作中效率较低.
也就是说,定点数学在某些特定情况下绝对是有意义的。它通常用于存储时间或世界坐标,其中一致的精度(而不是一致的相对精度)是一个好处。然而,对于一般的计算,定点计算很麻烦,而且容易出错。
https://stackoverflow.com/questions/20645695
复制相似问题