声明float还是cast float?

时间:2010-03-09 21:29:51

标签: c++ types casting floating-point

我已经开始使用“Stephen Prate的C ++ Primer”学习C ++,我目前正在尝试完成其中一个练习。我想知道我是否应该宣布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 个答案:

答案 0 :(得分:4)

让它们浮动,当你所有的计算都以浮点形式完成时,它们没有理由成为整数:

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

请记住,在常量值的情况下,无论如何都会在编译时完成转换,因此这纯粹是一种设计选择,没有性能变化。但一般来说,如果你发现自己正在投射,你可能会选择不正确的数据类型。

对于它的价值,当你需要强制转换时,你应该更喜欢C ++样式转换。例如:

static_cast<float>(arc_to_minute);

答案 1 :(得分:2)

将它们声明为float(或更好,双倍),因为这就是你将如何使用它们。

答案 2 :(得分:0)

我认为没有任何问题。快乐学习!

编辑:但是对于投射,更喜欢static_cast。