在C++ (和C)中,没有后缀的浮点文字默认为double,而后缀f意味着float。但是获取long double的后缀是什么?
在不知情的情况下,我会定义,比如说,
const long double x = 3.14159265358979323846264338328;但我担心的是,变量x包含的重要3.14159265358979323846264338328位数比64少,因为这是一个double文本。这种担心有道理吗?
发布于 2014-02-04 16:28:03
来自C++标准
除非由后缀显式指定,否则浮点文字的类型是双重的。后缀f和f指定浮动,后缀l和L指定长双。
与C标准的相应段落进行比较是很有趣的。在C语言中,用术语floating constant代替floating literal在C++中:
4未加后缀的浮动常数具有双重类型。如果以字母F或F作为后缀,则为float类型。如果以字母L或L作为后缀,则为长双字。
发布于 2014-02-04 16:26:13
C后缀是L。我强烈怀疑C++也是如此。
你的担心是有道理的。您的文字将首先被转换为double,然后被截断,然后再转换回long double。
发布于 2014-02-04 16:26:54
您的关注是有效的,您应该使用L后缀来表示长双字面值。
https://stackoverflow.com/questions/21557816
复制相似问题