stof возвращает 0 для объекта, отлично работает для нормальных переменных - PullRequest
0 голосов
/ 04 мая 2020

У меня есть вектор, в котором хранятся некоторые значения, и класс 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 для значений перед преобразованием они совпадают со строкой, которую я использую, и все значения после преобразования равны 0.

1 Ответ

3 голосов
/ 04 мая 2020

(1/6) равно 0, потому что это целочисленное деление. Таким образом, все становится равным нулю.

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

должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...