使用浮点数、双精度数和长双精度数后,控制台中不显示所有数字



我仍然是C++的新手,并在这里寻找问题的答案,但所有答案似乎都太技术性了,让我更加困惑。让我首先声明我知道,从C++ tut,我正在使用浮点数 = 4 字节,大约 7 位数字。双 =8 字节,约 15 位数字。和长双= 8字节,大约15位数字。

这是我的问题:我创建一个简单的总和并使用浮点数、双精度数和长双精度数声明变量。但是我在构建和运行后在控制台上的答案没有显示正确的位数。对于浮点数,它工作正常,但不适用于其他两个。例:

float sum;
sum = 9.123456 * 5;

现在,当我构建并运行它时,控制台上的答案显示 float 的1.82469(这很好,因为它是包括"点"在内的 7 位数字)。但是对于双精度和长双精度,当我运行它时,它仍然在我的控制台中显示1.82469(7 位数字)。

所以我有两个问题:

  1. 为什么我的主机总是只显示 7 位数字?
  2. 当 double 使用与长双精度
  3. 完全相同的字节 (8) 并且两者都允许相同数量的数字 (15) 时,使用长双精度有什么意义?不确定这是否相关,但我正在使用最新的代码块和GNU GCC编译器。
1) cout << setprecision(15) 

2)C++标准没有完全指定类型。例如,"long"可以是 32 位或 64 位。因此,"长双倍"可以等于"双倍",也可能不是。

最新更新