mfc中可编辑文本框如何判断输入的浮点数是否合法

fdesheng 2012-02-19 06:22:40
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;
}
...全文
641 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hotpos 2012-02-20
  • 打赏
  • 举报
回复
UpdateData 返回False时,表示用户输入不符合你的预期设定。
向立天 2012-02-20
  • 打赏
  • 举报
回复
简单点用UpdateData判断
这个函数有返回值
fdesheng 2012-02-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hdg3707 的回复:]
用sprintf_s函数试试
[/Quote]是在对话框里面,可以用sprintf_s吗?这个我刚开始学了半年,不是很懂。
hdg3707 2012-02-19
  • 打赏
  • 举报
回复
用sprintf_s函数试试
fdesheng 2012-02-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 joeblackzqq 的回复:]
引用 3 楼 fdesheng 的回复:

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

这是误差引起的吧,难以避免的,你试试532e-2呀,如果没问题就证明程序是没有问题的。
如果你要达到很高的精度,就只有自己用代码去实现了。
[/Quote]我说这个的原因是我看到很多人说将文本框输入设置为字符串,然后用上面2里面的函数进行判断,用的时候用atof变成小数。这样看来这种方法是不行了,我输入要求精度就是在-8或-9这个数量级上。
JoeBlackzqq 2012-02-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fdesheng 的回复:]

Up 求帮助啊求帮助,而且又发现一个问题,532e-9用atof不能准确的转成浮点数,而是0.00....怎么办啊
[/Quote]
这是误差引起的吧,难以避免的,你试试532e-2呀,如果没问题就证明程序是没有问题的。
如果你要达到很高的精度,就只有自己用代码去实现了。
fdesheng 2012-02-19
  • 打赏
  • 举报
回复
Up 求帮助啊求帮助,而且又发现一个问题,532e-9用atof不能准确的转成浮点数,而是0.00....怎么办啊
fdesheng 2012-02-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 visualeleven 的回复:]
用个CEdit编辑框,在EN_CHANGE/EN_UPDATE响应里判断输入的数据是否合法
[/Quote]谢谢,关键是怎么判断啊,现在我用的是2、里面的函数进行判断,但是只能判断2.36465这种形式的,563e-8这种的没法判断。
Eleven 2012-02-19
  • 打赏
  • 举报
回复
用个CEdit编辑框,在EN_CHANGE/EN_UPDATE响应里判断输入的数据是否合法

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧