可以完全准确地保留该字节数量一半的无签名整数的范围吗?

例如,八个字节可以完全准确地保留四个字节未签名的int的范围吗?

如果两个字节浮子可以保持一个字节未签名的int的范围,那么这将归结为。

一个字节未签名的int将当然是0-> 255。

有帮助吗?

解决方案

IEEE754 64位双倍可以代表任何32位整数,仅仅是因为它具有53-ODD(一个) 可用于精确的位,32位整数仅需求,嗯,32 :-)

对于(非IEEE754双精度)64位浮点数的(非精度少于32位)是合理的。这将允许真正的数字(由于指数),但要付出精确的代价。

最重要的是,只要浮点数的Mantissa中的精度比整数中的精确度更高(指数中足够的位置可以扩展),则可以表示它而不会丢失精度。


(一个) 从技术上讲,第53位的精度是暗示的 1 在序列的开头,因此“变量”的量可能仅为52位。无论是52还是53,它仍然足够代表每32位整数。

其他提示

是的。浮子(或双)可以确切地代表不需要截断的任何整数。对于双重,有53位精确度,因此足以准确代表任何32位整数,并且也有64位的小比例(从统计上讲)。

确切的范围是您可以准确表示的范围取决于实施中的许多因素,但是您可以通过说指数字段设置为0来降低限制,您可以准确地表示整数至您的Mantissa字段(假设一个符号)。对于IEEE 754 DoubleCisision,这意味着您可以准确地表示52位数字。通常,您的Mantissa将是整体结构宽度的一半以上。

有关双重工作方式的更多详细信息,您可能想查看此博客文章: 浮点数的解剖.

在谈论浮点数时,我不会使用“完全精确”的单词。但是是的,一个 double 可以代表32位整数。

我不知道浮子和ints的其他组合也是如此。

实际上,您不想打扰使用机器支持的浮点,因此只需切换到使用Bignums的理性算术。这样,您可以保证精确度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top