Объявить поплавок или бросить поплавок? - PullRequest
2 голосов
/ 10 марта 2010

Я начал изучать C ++, используя «C ++ Primer by Stephen Prate», и в настоящее время я пытаюсь выполнить одно из упражнений. Мне интересно, должен ли я объявить arc_to_minute & arc_to_degree как float или привести их как float, как я уже сделал. Любые советы приветствуются!

#include <iostream>

int main()
{
    using namespace std;
    cout.setf(ios_base::fixed, ios_base::floatfield);

    const int arc_to_minute = 60;
    const int arc_to_degree = 60;

    float degrees;
    float minutes;
    int seconds;

    cout << "Degrees: ";
    cin >> degrees;
    cout << "Minutes: ";
    cin >> minutes;
    cout << "Seconds: ";
    cin >> seconds;

    //convert seconds to minutes and add
    minutes = minutes + seconds / float (arc_to_minute);

    //covert minutes to degrees and add
    degrees = degrees + minutes / float (arc_to_degree);

    cout << degrees;
}

Ответы [ 3 ]

4 голосов
/ 10 марта 2010

Делайте их плавающими, нет никаких оснований считать их целыми числами, когда все ваши вычисления выполняются с плавающей запятой:

const float arc_to_minute = 60.0f;
const float arc_to_degree = 60.0f;

Имейте в виду, что в случае с постоянными значениями приведение будет выполняться во время компиляции, так что это чисто проектный выбор без изменений производительности. Но в целом, если вы обнаружите, что используете приведение, вы, вероятно, выбрали неверный тип данных для начала.

Для чего бы то ни было, вы должны предпочесть приведение в стиле C ++, когда вам нужно выполнить приведение. Например:

static_cast<float>(arc_to_minute);
2 голосов
/ 10 марта 2010

Объявите их как float (или, еще лучше, double), потому что именно так вы собираетесь их использовать.

0 голосов
/ 10 марта 2010

Я не вижу проблемы в любом случае. Счастливого обучения!

Редактировать: Но для кастинга, предпочтите static_cast.

...