【问题标题】:How to store float numbers in array C++ [duplicate]如何在数组C++中存储浮点数[重复]
【发布时间】:2016-08-27 22:41:34
【问题描述】:

我正在处理一个项目,但我找不到将浮点数存储在数组中的方法。我有一个带有浮点数的 .txt 文件(testfile.txt),像这样

1.0 2.0
3.0 4.0
5.0 6.0
7.0 8.0
9.0 10.0

我想将它存储到一个数组中。但是当我这样做时,我所有的数字都被转换为整数。我的程序如下所示:

#include <fstream>
#include <iostream>

using namespace std;

int main()
{
    double number[10];

    ifstream infile;
    infile.open("testfile.txt");
    for(int a=0; a<10; a=a+1)
    {
      infile >>  number[a]; // Reading from the file
      cout << number[a] << endl;
    }
}

而输出是这样的

1
2
3
4
5
6
7
8
9
10

有人可以向我解释我做错了什么吗?我已经尝试了很多,提前谢谢!

【问题讨论】:

  • 你能解释一下问题出在哪里吗?
  • "我所有的数字都转换为float" -- 我在这里假设您的意思是您认为所有数字都转换为int,因为它们'在输出中重新打印“作为整数”。如果我在这里的假设是正确的,那么您只是没有设置 std::ostream 精度,以便它们会以小数形式打印 - 数字本身确实存储为 double
  • 您可以使用std::fixedstd::setprecision()来控制十进制数字的输出。
  • 您好 nordhagen,欢迎来到 Stack Overflow。我不太明白你的问题;输入文件中的所有数字都是整数,您显示的输出似乎完美地保留了数字值。你期望发生什么不同的事情?

标签: c++ arrays numbers double text-files


【解决方案1】:

您的问题不在于如何存储数字。

数字保存得很好。

你的问题是你如何看待这些数字。

你打印数字的方式是错误的,所以你看到的数字是错误的,所以你认为数字有问题。

默认情况下,cout &lt;&lt; my_double_variable 将呈现您的双精度数,不带小数。

一个简单的谷歌搜索“C++ cout double”会产生以下stackoverflow问答的第一个结果:

How do I print a double value with full precision using cout?

据此,解决方案是使用cout.precision(N);,其中N 是您想要的精度。

小打印:被错误的打印输出误导,没有所有的野鹅追逐。所以,我的建议是:开始使用调试器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-02
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    相关资源
    最近更新 更多