我正在尝试创建一个初学者级程序,将输入从一个时间单位转换为另一个单位时间。基本上我所追求的是:用户输入了若干天,小时和分钟,这些值将转换为数周和秒。这是我到目前为止所展示的" 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;
}
我确定在转换部分我做错了。非常感谢任何帮助,谢谢。
答案 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;
我强烈反对第二种方式,因为使代码更难阅读。