是否IEEE-754浮点数,双和四保证-2,-1,-O,0,1,2确切表示?(Does IEEE-7

2019-11-02 16:04发布

所有在标题:不IEEE-754 floatdoublequad保证确切表示-2-1-0012

Answer 1:

直到显著二进制位数超过尾数的范围内它保证所有整数的精确表示。



Answer 2:

IEEE 754浮点数可以用来精确地储存一定范围的整数。 例如:

  • binary32 ,在C / C ++实现为float ,提供的精度24位,因此可以具有全精度16位整数,例如表示short int ;
  • binary64 ,在C / C ++实现为double ,提供的精度53位,并能准确地代表32位整数,例如int ;
  • 非标准英特尔80位精度,作为实现long double由一些在x86 / x64编译器,提供64显著位,可以表示64位整数,例如long int (上LP64系统,例如UNIX)或long long int (上LLP64系统,如Windows);
  • binary128 ,因为诸如编译器特定的类型实现__float128 (GCC)或_Quad (英特尔C / C ++),提供了在尾数113个比特,因此可以精确地表示64位整数。

这一事实double适合的扩展范围的整数,甚至超过的32位整数的范围内,在JavaScript中,这doesen't具有特殊整数数值型使用,并且代替使用双精度浮点表示整数 。

浮点数的一个特殊之处是,它们有不同的符号位,因此喜欢的东西正,负零点存在,这是不可能的补符号整数。



Answer 3:

简单的方法来得到答案任意十进制数, 绝对值转换为二进制(24位浮法,53位双,113位为四通道),然后回十进制,看看你是否得到相同的值返回。

对于整数,答案是显而易见的,你不会失去任何东西,除非值过大,以适应位的给定数。

与非整数部分合理值的换算是更有趣。 还有,当转换成二进制一些固定的宽度,并转换回小数时,你可能会得到定期的十进制扩展十进制值(或者,如果你详谈再次失去精度),你可能会失去精度。


既然你与IEEE花车涉足,首先阅读维基百科页面 ,那么当你觉得你已经准备好更多,与第一外部链接那里,继续“什么每台计算机科学家应该知道关于浮点运算”



文章来源: Does IEEE-754 float, double and quad guarantee exact representation of -2, -1, -0, 0, 1, 2?