如何检查条目是否是包括浮点数的数字

How to check if entry is number including float numbers

本文关键字:包括 是否是 浮点数 数字 何检查 检查      更新时间:2023-10-16

有没有一种简单的方法或函数来检查编辑框的条目是否是数字,包括浮点数。不允许任何字母或字母数字输入。如果没有浮点数部分,我会检查 ascii,但我认为它不适用于浮点数。

谢谢

由于您的问题被标记为 mfc ,下面是使用 CString 的代码片段:

CString ss;
float ff;
GetDlgItemText(IDC_MY_EDIT_BOX, ss);
if (_stscanf_s(ss, _T("%f"), &ff) == 1)
    // ff contains the value
else
    // error

如果需要使用双精度数字,请在 scanf 调用中使用 "%lf"

编辑:

CString ss;
float ff;
GetDlgItemText(IDC_MY_EDIT_BOX, ss);
LPCTSTR lpszString = ss;
TCHAR *endptr;
ff = (float) _tcstod(lpszString, &endptr);
if (endptr != lpszString && *endptr == '')
    // ff contains the value
else
    // error

如果是对话框,则可以向对话框添加编辑控件。比启动对话框向导将变量添加到此编辑控件。选择类型浮点数。DDX_Text例程将完成其余的工作。

但这将允许输入字母字符。如果你也想解决这个问题。可以使用仅允许十进制数字和小数点的特殊 OnChar (WM_CHAR) 处理程序对编辑控件进行子类化。