【发布时间】:2011-02-01 03:43:55
【问题描述】:
为什么 C++ 不支持无符号双精度语法?
【问题讨论】:
-
哪些语言支持它?它认为通常假设如果您使用任何类型的浮点,那么几乎不需要无符号。
为什么 C++ 不支持无符号双精度语法?
【问题讨论】:
因为典型的浮点格式不支持无符号数。例如,请参阅this list of IEEE 754 formats。
添加普通硬件不支持的数字格式只会让编译器编写者的生活变得困难,而且可能不值得付出努力。
【讨论】:
C++ 不支持无符号浮点类型,因为大多数浮点硬件不支持无符号浮点类型。一些显卡确实可以使用无符号浮点,但它通常是内部的,对程序或用户来说并不真正可见。
【讨论】:
无符号整数获得了额外的精度,并且与有符号整数的位语义略有不同。浮点数和双精度数总是为符号保留一点(在大多数硬件上)并且没有按位语义,因此使用无符号实数类型并没有真正的好处。
【讨论】:
unsigned float x = -3; 并让编译器抱怨。但是如果你从一个较小的数字中减去一个较大的数字,大多数硬件将不会像 unsigned int 那样捕获溢出。所以,是的,我承认可能会有好处,但它会非常微不足道。