【问题标题】:stof returning 0 for object, works fine for normal variablesstof 为对象返回 0,适用于普通变量
【发布时间】:2020-05-04 09:28:11
【问题描述】:

我有一个存储一些值的向量,以及一个带有一些方法的 Weather 类。其中一种方法是使用 stof 将字符串转换为浮点数,然后对该新值进行计算并返回它。我看到 stof 适用于我的一个不属于某个类的自变量,但是当我调用这个对内部传递的字符串执行 stof 并在计算后返回该浮点值的方法时,它返回一个 0。有人可以解释一下这是为什么呢?

Main.cpp:

cout << "Before converting: " << solar1 << '\n';
windlog2.solar.SetSolar(solar1);
cout << "After converting: " << windlog2.solar.GetSolar() << '\n';

天气.cpp:

float Weather::convertSolar(string solar1){

    float newValue = 0;

    newValue = stof(solar1);

    newValue = ((newValue)*(1/6))/1000;

    solar = newValue;

    return solar;

}

在我的 cout 语句中,Before Converting 的值与我使用的字符串相同,After Converting 的值都是 0。

【问题讨论】:

  • 这可能是简化问题的产物,但该表达式可以更简单地写为newValue/6000

标签: c++ class vector methods


【解决方案1】:

(1/6)0 因为它是整数除法。因此,一切都归零。

newValue = ((newValue) * (1.f / 6.f)) / 1000.f;

应该可以。

【讨论】:

  • 你是对的,确实如此。傻我。谢谢你!
猜你喜欢
  • 2020-03-14
  • 1970-01-01
  • 2019-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多