MFC编辑框设置,输入、输出数据最多保留5位小数
来源:互联网 发布:苹果bt下载软件 编辑:程序博客网 时间:2024/05/21 10:17
1.获取文本改变(输入更多字符时)的消息时,获取输入的内容,判断小数点后位数(笨办法是查找小数点位置),如果超出要求,就通过sprintf使用%.5f这样的办法,把输入的数字改为符合需求的格式,然后更新编辑框里面的文本。
2.双击Edit控件,添加消息处理函数,将上面这段代码放在里面.
可以这样(Unicode版本)CString strText, strTemp;// 为edit控件绑定变量m_EditText//获取控件的内容m_EditText.GetWindowText(strText);//定位小数点int nPos = strText.Find(_T('.')); if(n != -1){ //获取小数点后面的数据 strTemp = strText.Mid(n+1); //如果长度大于5,则忽略后面的数据 if(strTemp.GetLength() > 5) { strText.Format(_T("%.5f"), _tstof(strText.GetBuffer())); strText.ReleaseBuffer(); m_EditText.SetWindowText(strText); }}---------------------------------------------------------------------------------------------------------------------------------------
这涉及2种作法
1、直接有接收框的事件处理中进行输入限制,当输入长度超过时禁止再输入。此法的缺点的编程较复杂,必须处理好各个输入事件。
2、在输入结束离开接收框时处理,即后处理。此法优点是处理简单。
------------------------------------------------------------------------------------------------------------------------------------------------
我是这样想的:给编辑框设置一个成员变量m_aa,再定义一个CString str,通过str.Format()来实现格式化输出,在编辑框失去焦点时触发事件。代码是这样的:
void CCurve_testDlg::OnKillfocusEdit1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
float naa; //编辑框输入值
CString str; //定义一个字符串型变量
naa=m_aa;
str.Format(_T("%.5f"),naa); //格式化输出,%.5f是指保留小数点后5位小数
m_aa=atof(str); //将转化后的值显示在编辑框上
UpdateData(FALSE);
}
可是在使用的时候遇到了问题,界面上有三个编辑框(m_aa,m_bb,m_cc),对每个编辑框采取以上处理,只有第一个编辑框实现了小数点后保留5位小数,而其他两个编辑框都无法实现(第二个编辑框小数点后保留了4位小数,第三个保留了3个小数,这样递减)。我不知道这是什么原因。。。
-------------------------------------------------------------------------------------------------------------------------------
这个是我按照你的思路写出来,基本没有区别,也实现了你想要的功能
UpdateData(TRUE);
float naa = m_aa;
CString str;
str.Format(_T("%.5f"), naa);
m_aa = _tstof(str.GetBuffer());
str.ReleaseBuffer();
UpdateData(FALSE);
你可以检查一下三个控件变量,看看有什么问题没有,比如设置断点看看,是否获取到了你输入的值,而这个值又是在哪里被改写了。
----------------------------------------------------------------------------------------------------------------------
编写一个EDIT类,里面加判断,你这样写的话有很多BUG,比如可用输入字母、输入多个小数点、输入多个符号,还有中文等等。
- MFC编辑框设置,输入、输出数据最多保留5位小数
- oracle最多保留两位小数-补充
- vb.net中如何设置输出保留n位小数
- 输入框最多能输入2位小数的限制
- 一个输入框限定最多输入两位小数
- JS限制input输入的为数字并且有小数的时候最多保留两位小数
- 输出数据保留一位小数
- 限制 EditText 最多输入两位小数
- 数字输入处理 , 保留两位小数
- Java输出结果保留两位小数
- C++保留两位小数输出
- C++如何保留两位小数输出
- C++保留2位小数输出
- java输出保留n位小数
- Java输出结果保留两位小数
- C#控制台基础 输入一个数字,输出保留两位小数
- <fmt:formatNumber> 最多保留小数部分几位
- iOS 怎样实现最多保留n位小数
- mysql的yearweek 和 weekofyear函数
- 设置服务器开机启动不要填写密码 control userpasswords2
- C++中如何修改const变量(非常重要)
- 304. Range Sum Query 2D - Immutable
- 安卓使用webView中的JavaScript代码
- MFC编辑框设置,输入、输出数据最多保留5位小数
- Qt中如何添加ICON图标 Qt设置应用程序图标
- HTML 特殊符号编码对照表
- B-tree/B+tree/B*tree
- Android WebView页面加载优化
- Spring的AOP使用xml配置
- 324. Wiggle Sort II
- how to write order by and limit query in jpa [duplicate]
- PE文件结构分析