【发布时间】:2020-09-03 18:32:44
【问题描述】:
我正在上初学者级别的 C++ 课程,但是当我在 C++ 中将分钟转换为天、小时、分钟和秒时,我无法弄清楚为什么会得到错误的输出。
我有一个朋友帮助我,她能够使用相同的数学在 Python 中获得正确的输出,但由于某种原因,在 C++ 中我无法在几秒钟内获得正确的输出。我确信有一个更简单的方法来获取输出,但这是教授希望我们编写它的方式。
例如,输入为 10.5,代码输出 0d 0h 10m 0s 而不是 0d 0h 10m 30s。
代码如下:
#include <iostream>
using namespace std;
int main() {
//get the starting number of minutes
int inputMinutes;
double decimalMinutes;
cout << "Enter number of minutes: ";
cin >> decimalMinutes;
//allow decimal input
inputMinutes = decimalMinutes;
//get number of days
int days = inputMinutes / 1440;
inputMinutes = inputMinutes % 1440;
//get number of hours
int hours = inputMinutes / 60;
//get number of minutes
int mins = inputMinutes % 60;
int seconds = inputMinutes % 1 * 60;
//output days, hours, minutes and seconds
cout << days << "d " << hours << "h " << mins << "m " << seconds << "s" << endl;
}
我觉得这与将 int 转换为 double 有关,但如果不是这种情况,那么我不确定它可能有什么问题。任何帮助表示赞赏,谢谢。
【问题讨论】:
-
这里是你放松的地方:
inputMinutes = decimalMinutes;. -
你不能
cin >> decimalMinutes吗? -
你很幸运,0.5 可以精确地表示为 double。如果您要尝试另一个值,例如
10.33,如果舍入问题导致错误答案,请不要感到惊讶。 -
我有一个朋友帮助我,她能够在 Python 中得到正确的输出——Python 不是 C++。无论你的朋友做什么,它都可能不适用于 C++ 程序。
-
当我删除 inputMinutes = decimalMinutes;它根本不输出任何值。
标签: c++