mfc中可编辑文本框要输入的必须是浮点数(0.2555和532e-9这两种形式),如果不是,在下一步操作的时候给出提示。
1、我把文本框的输入设置为float,还是有个问题,那就是如果输入不是浮点数,会给出提示,但是提示后直接报错退出程序。这个有没有什么方法可以让他报错后给出警告但不退出的。
2、我在网上找了个判断浮点数的例子,单独运行的时候两种形式都可以判断,但是我把他放到mfc中的时候就不能判断科学计数法表示的浮点数了
那个代码是这个:#include <stdio.h>
#include <string.h>
#include <ctype.h>int chk(char st[])
{
 int point=0,i,len;
 if (st[0]!='+'&&st[0]!='-'&&!isdigit(st[0])) {
  return 0;
 }
 len=strlen(st);
 for (i = 1; i<len; ++i) {
  if (!isdigit(st[i])&&st[i]!='.') {
   return 0;
  }
  if (st[i]=='.') {
   ++point;
   if (point>1) {
    return 0;
   }
  } }
 return 1;
}
int main(void)
{
 char st[80];
 scanf("%*[ ]%79s",st);
 printf("%s",chk(st)?"YES":"NO");
 return 0;
}

解决方案 »

  1.   

    用个CEdit编辑框,在EN_CHANGE/EN_UPDATE响应里判断输入的数据是否合法
      

  2.   

    Up 求帮助啊求帮助,而且又发现一个问题,532e-9用atof不能准确的转成浮点数,而是0.00....怎么办啊
      

  3.   

    我说这个的原因是我看到很多人说将文本框输入设置为字符串,然后用上面2里面的函数进行判断,用的时候用atof变成小数。这样看来这种方法是不行了,我输入要求精度就是在-8或-9这个数量级上。
      

  4.   

    是在对话框里面,可以用sprintf_s吗?这个我刚开始学了半年,不是很懂。
      

  5.   

    简单点用UpdateData判断
    这个函数有返回值
      

  6.   

    UpdateData 返回False时,表示用户输入不符合你的预期设定。