繁体   English   中英

C ++将用户输入覆盖为双精度十进制字符串

[英]c++ coverting user input double into string with decimal

嗨,大家好,我正在尝试将用户输入的double转换为字符串并与其他字符串连接,但是double后面不包含.00。 例如,如果我输入72.98,则它正确地打印出72.98,但是当我输入72.00时,它仅打印出72,不带.00。 我如何确保.00在那里。

string desc, date;
double amount;
. 
.
.   
cout << "Enter expenses amount: ";
cin >> amount;
//print to see the amount
cout << amount << endl;
.
.
.
string amt;
amt = static_cast<ostringstream*>( &(ostringstream() << amount) )->str();

string input = desc + ":" + amt + ":" + date;

我已经尝试过下面的代码,但不能正常工作,它给出了一些有趣的数字

stringstream amtstr;
amtstr << setprecision(2) << fixed << amount;
cout << amtstr << endl;;

您的stringstream方法有效。 您写时根本不打印其内容

cout << amtstr << endl;

相反,此代码将打印stringsteam对象本身 它的定义是从对象上打印地址 ,而不是字符串内容。

您可以使用str()成员函数访问字符串内容,例如:

cout << amtstr.str() << endl;

观看此现场演示

您的编译器是否支持std :: to_string

auto input = std::to_string(myDouble);
if (input.find(".") == std::string::npos) {
    input += ".00";
}
else {
    input = input.substr(0, input.find(".") + 3);
}

您可以使用良好的旧C样式格式。

char szBuffer[64];
sprintf(szBuffer, "%.2f", amount);
std::string amt = szBuffer;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM