Number在编辑框中始终输出为十进制,无论它是整型还是双精度型



我对编码很不熟悉,在过去的几天里,我一直在探索WINAPI并试图学习一些新的东西,所以我决定做一个计算器(老实说,比我想象的要难)。

现在我已经使一切工作,但剩下的唯一问题是,当我尝试使用计算器时,我总是得到这样的结果:22+22 = 44.0000000。是否有一种方法,我可以格式化编辑框显示十进制数字只有在需要的时候,或者也许有什么我做错了在功能?

我在下面包含了一个计算函数(用于乘法):

void multiply() {
WCHAR A[20], B[20];
GetWindowText(hOutputBot, A, 20);
GetWindowText(hOutputTop, B, 20);
double Aa = std::stof(A);
double Bb = std::stof(B);

double Res = Bb * Aa;
std::wstring s = std::to_wstring(Res);
LPCWSTR str = s.c_str();
SetWindowTextW(hOutputBot, str);
}

当您使用std::to_string()函数时,自定义格式并不真正可用。相反,您可以使用标准格式化的输出操作符将数据写入字符串流,然后从中读取std::string:

//  std::wstring s = std::to_wstring(Res);
std::wstringstream ss;  ss << Res; // Write value to string stream
std::wstring s;         ss >> s;  // ... then read it into string.
//...
LPCWSTR str = s.c_str();

(注意你需要#include <sstream>.)

double类型的默认输出格式类似于在C-styleprintf()函数中使用%lg格式说明符;但是,如果您愿意,您可以使用<iomanip>标准头中的各种函数添加进一步的自定义。

最新更新