【发布时间】:2015-02-02 21:50:01
【问题描述】:
我仍然是 C++ 的新手,并在此处查看了我的问题的答案,但所有答案似乎都过于技术化,让我更加困惑。 让我首先声明我知道,从 C++ tut 我使用的 float = 4 个字节,大约。 7位数。双 = 8 个字节,大约。 15 位数。 Long double=8 字节,大约 15 位。
这是我的问题:我创建了一个简单的 sum 并使用 float、double 和 long double 声明变量。但是我在构建和运行后在控制台上的回答没有显示正确的位数。对于 float 它工作正常,但不适用于其他两个。示例:
float sum;
sum = 9.123456 * 5;
现在,当我构建并运行它时,控制台上的答案显示 1.82469 for float(这很好,因为它是 7 位数字,包括“点”)。但是对于 double 和 long double ,当我运行它时,它仍然在我的控制台中显示 1.82469(7 位数字)。
所以我有两个问题:
- 为什么我的控制台总是只显示 7 位数字?
- 当 double 使用与 long double 完全相同的字节 (8) 并且两者都允许相同数量的数字 (15) 时,使用 long double 有什么意义? 不确定这是否相关,但我使用的是最新的 CodeBlocks 和 GNU GCC 编译器。
【问题讨论】:
-
您忘记在问题中包含您的代码。
-
感谢 Cyber 拆砖!
-
小数点不是有效数字,因此不计入值的“精度”。另请注意,9.123456 是一个双精度字面值,因此在向下转换为浮点数之前,该操作将以双精度完成。你需要
9.123456f来获取浮点值
标签: c++