当前位置: 首页 > 知识库问答 >
问题:

从文件中读取数据,然后对它们进行操作。将字符串转换为浮点

田曜瑞
2023-03-14

我有问题,但我不知道怎么解决。有人能帮帮我吗?问题。在文本文件中

1. 20.20
2. 3

我想从文件中获取数据,并使用它。我的代码:

int main() 
{
  string tp;
  float data_1 = 0, data_2 = 0, total = 0;

  std::fstream file;
  file.open("text.txt", ios::in);

  std::getline(file, tp);
  data_1 = std::stof(tp);

  std::getline(file, tp);
  data_2 = std::stof(tp);

  total = dat_1 * data_2;
  cout << "Total: " << total << endl;
}

在程序总数不是60.60,但它是需要的。问题在哪里?

共有2个答案

江志业
2023-03-14

首先,dat_1没有声明,它应该是data_1

然后,可以使用std::fixed指定点后的位数,使用std::setprecision指定位数。

cout << "Total: " << std::fixed << std::setprecision(2) << total << endl;

参考资料:

  • std::fixed,std::scientific,std::hexfloat,std::defaultfloat-cppreference.com
  • std::setprecision-cppreference.com

如果您确实希望打印60,60,而不是60.60,则可以使用std::replace更改字符。

#include <iostream>
#include <string>
#include <iomanip>
#include <algorithm>
#include <sstream>
using std::ios;
using std::cout;
using std::endl;

int main(){
    float total = 60.60;
    std::stringstream ss;
    ss << std::fixed << std::setprecision(2) << total << endl;
    std::string str = ss.str();
    std::replace(str.begin(), str.end(), '.', ',');
    cout << "Total: " << str << endl;
}
柯轶
2023-03-14
#include <iostream>
#include <string>
#include <fstream>

int main(void)
{
    std::string tp;
    float data_1 = 0, data_2 = 0, total = 0;
    std::ifstream file("text.txt");

    std::getline(file, tp);
    data_1 = std::stof(tp);
    std::getline(file, tp);
    data_2 = std::stof(tp);
    total = data_1 * data_2; // you wrote dat_1 instead of data_1
    std::cout << total << std::endl;
    return (0);
}
 类似资料:
  • 我正在使用Schembuf在带有套接字的计算机之间更改数据。要传输数据,我使用以下内容: 然而,我注意到Protobuf无法读取任何非int类型的接收数据(它将其分配给0)。果不其然,如果我不使用套接字,但试图用相同的代码片段返回消息,则会发生相同的情况: 我还指出: 那么,为什么我不能正确地将数据转换回字符串呢?如果这是一个参考问题,为什么protobuf不能读取字符数组数据或从字符数组转换的字

  • 问题内容: 正如标题所说。我不认为有可能这样做,但如果可以告诉我。 这是我正在编写的bukkit(minecraft服务器)插件所必需的。我要执行一个命令:tnt [power]。电源是我想转换为浮点数的返回字符串。 谢谢 问题答案: 用于进行转换。 和之间的区别只是回报。如果需要(对象),请使用前者;如果要数字,请使用后者。

  • 问题内容: 我有一个标准化的浮点数数组(即数组中最大的数字是1),我想将其用作图形的颜色索引。在使用matplotlib使用灰度时,这需要使用0到1之间的字符串,因此我想将float数组转换为字符串数组。我试图通过使用“ astype(’str’)”来执行此操作,但这似乎会创建一些与原始值不相同(甚至接近)的值。 我注意到这一点是因为matplotlib抱怨在数组中找到数字8,这很奇怪,因为它被标

  • 问题内容: http://golang.org/pkg/strconv/ http://play.golang.org/p/4VNRgW8WoB 如何将浮点数转换为字符串格式?这是google游乐场,但未获得预期的输出。(2e + 07)我想得到“ 21312421.213123” 请帮助我从浮点数中获取字符串。谢谢 问题答案: 试试这个 如果只想获得尽可能高的位数精度,则特殊精度-1使用所需的最

  • 试图对这个问题中的各个数字求和。然而,当涉及负数时,函数就会分崩离析。这是因为当您使用toString()时,会将负号转换为NewStr中的值。例如,在本例中,newstr[0]==='-'。不管怎么说都是为了解决这个问题?最好使用Number()函数

  • 我有一个csv文件包含一些浮点数据。代码很简单 然后我将其转换为float32以节省内存使用。 值刚刚更改!我如何保持数据不变? (我也尝试了,但是print仍然得到相同的输出)