【发布时间】:2008-12-29 23:47:26
【问题描述】:
C++ 提供三种浮点类型:float、double 和 long double。我很少在我的代码中使用浮点数,但是当我这样做时,我总是被诸如
之类的无害行上的警告所吸引float PiForSquares = 4.0;
问题是文字 4.0 是双精度数,而不是浮点数 - 这很烦人。
对于整数类型,我们有 short int、int 和 long int,这很简单。为什么 C 没有短浮点数、浮点数和长浮点数? “double”到底是从哪里来的?
编辑:浮动类型之间的关系似乎类似于整数。 double 必须至少与 float 一样大,long double 至少与 double 一样大。没有其他精度/范围保证。
【问题讨论】:
-
4.0 不是字符串文字;它是双重文字!
-
long float 在 double 之前存在,double 是 long float 的同义词;它已从 C89 标准中删除。
-
我想要的是“双浮动”:)
-
<float.h>周围有 很多 保证,特别是像 FLT_DIG 之类的东西(我认为它保证能够表示 5 个十进制数字,即从 0 到 99999 的整数)。 -
这个SO question 也可能对名称“single”和“double”很感兴趣。
标签: c++ c floating-point history ieee-754