在C ++帮助中使用setprecision()

时间:2013-10-05 21:19:09

标签: c++ decimal

当我运行程序时,setprecision适用于所有变量。我试图让变量secondsinput成为一个整数。我已经尝试将该变量设置为int,但这会搞砸数学。有什么想法吗?

using namespace std;

int main()
{
double outputminutes, outputhours, outputdays, secondsinput;

cout << "Please enter the number of seconds: ";
cin >> secondsinput;
cout << endl;

outputminutes = secondsinput / 60;
outputhours = secondsinput / 3600;
outputdays = secondsinput / 86400;

cout << setprecision(2) << fixed;

if (secondsinput > 60 && secondsinput < 3600)
        cout << secondsinput << " seconds is " 
             << outputminutes << " minutes." 
             << endl << endl;

else if (secondsinput > 3600 && secondsinput < 86400)
        cout << secondsinput << " seconds is " 
             << outputhours << " hours." 
             << endl << endl;
else if (secondsinput > 86400)
    cout << secondsinput << " seconds is " 
             << outputdays << " days." 
             << endl << endl;
}

1 个答案:

答案 0 :(得分:1)

secondsinput设为int,因为这是您希望输入和显示的方式。只需修好数学。例如:

outputminutes = secondsinput / 60.0;
outputhours = secondsinput / 3600.0;
outputdays = secondsinput / 86400.0;

outputminutes = static_cast<double>(secondsinput) / 60;
outputhours = static_cast<double>(secondsinput) / 3600;
outputdays = static_cast<double>(secondsinput) / 86400;