在float中格式化十进制

时间:2016-03-23 14:06:17

标签: c++ winapi

我在TCHAR类型中的两个操作数都将它们转换为double,因为我的操作数可以是整数或双精度。当我1.5 + 1时,我2.500000。但我想要2.5。我知道如何使用printf解决问题,但我需要使用结果MessageBox。我该如何解决?

double result = _wtof(firstOperand) + _wtof(secondOperand);
wstring ans = to_wstring(result);
MessageBox(NULL, ans.c_str(), L"Result", MB_OK);

2 个答案:

答案 0 :(得分:2)

to_string(和to_wstring)不允许您控制精度(并且您的输出是精度问题)。

要控制精确度,您应该使用snprintfstd::ostringstream来首先准备字符串,然后使用MessageBox显示它。

答案 1 :(得分:0)

std::wostringstream ToMsgBox;
ToMsgBox << result;
std::wstring ans = ToMsgBox.str();

或快速而肮脏:

std::wstring ans = to_wstring(result);
ans.resize(test.find_first_of('.') + 2);