C++ 十进制浮点格式

C++ 十进制浮点格式,c++,winapi,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()

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);
到_string
(和
到_wstring
)不允许您控制精度(并且您的输出是一个精度问题)


为了控制精度,您应该使用
snprintf
std::ostringstream
首先准备字符串,然后使用
MessageBox

显示它。如果您的操作数是TCHAR,那么您可能需要
\sntprintf\s
,以便您的代码可以针对ANSI或wide模式进行编译。
t
用于
TCHAR
\u s
后缀代表“safe”,这意味着该函数将缓冲区的大小作为参数,以便从调用方卸载一些溢出检查。(虽然不完全安全,但更安全。)让流解决方案足够灵活地处理
TCHAR
s是可能的,但难度更大。
std::wostringstream ToMsgBox;
ToMsgBox << result;
std::wstring ans = ToMsgBox.str();
std::wstring ans = to_wstring(result);
ans.resize(test.find_first_of('.') + 2);