【问题标题】:All digits not displaying in console after using float, double and long double使用浮点数、双精度和长双精度后,所有数字均未显示在控制台中
【发布时间】: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 位数字)。

所以我有两个问题:

  1. 为什么我的控制台总是只显示 7 位数字?
  2. 当 double 使用与 long double 完全相同的字节 (8) 并且两者都允许相同数量的数字 (15) 时,使用 long double 有什么意义? 不确定这是否相关,但我使用的是最新的 CodeBlocks 和 GNU GCC 编译器。

【问题讨论】:

标签: c++


【解决方案1】:
1) cout << setprecision(15) 

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

【讨论】:

  • 谢谢你,阿列克谢。您的回答为我指明了正确的方向。 :)
  • 不客气。重要的是:“setprecision”不会影响值本身,只会影响它的打印方式。
猜你喜欢
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
  • 1970-01-01
  • 2020-10-13
相关资源
最近更新 更多