简单的C ++单位转换

时间:2014-09-08 00:04:14

标签: c++

我正在尝试创建一个初学者级程序,将输入从一个时间单位转换为另一个单位时间。基本上我所追求的是:用户输入了若干天,小时和分钟,这些值将转换为数周和秒。这是我到目前为止所展示的" 0"无论输入是几周还是几秒钟。

编辑:修复乘法,新代码数周。仍然是一个垃圾值。

#include <iostream>
using namespace std;

int main()
{
    int days, hours, minutes, weeks, seconds;

    cout << "--------------------" << endl;
    cout << "Enter a number of days: ";
    cin >> days;

    cout << "Enter a number of hours: ";
    cin >> hours;

    cout << "Enter a number of minutes: ";
    cin >> minutes;

    seconds = (days*86400)+(hours*3600)+(minutes*60);

    weeks = seconds/604800;

    cout << "--------------------" << endl;
    cout << "Equal to " << seconds  << " seconds" << endl;
    cout << "Equal to " << weeks << " weeks" << endl;

    return 0;
}

我确定在转换部分我做错了。非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:2)

您的所有变量都是ints,但您正在对它们执行非常大的分割。当int被分成非整数时,小数被丢弃而不是舍入(例如,3/2 = 1)。解决此问题的最简单方法是将所有变量转换为doubles,并使用cout上的setprecision将它们四舍五入为精度的两位数。或者,查看std::round

答案 1 :(得分:0)

Weeks是int以及你师的所有元素,这意味着整数除法。为了获得正确的结果,您应该使weeks float并在分割之前转换其中一个操作数,例如:

float weeks = float(seconds) / 604800;

float weeks = seconds / 604800.0;

我强烈反对第二种方式,因为使代码更难阅读。