我写了一个计算器 ,但是运算的时候有点问题问题: 当我计算 17 位以上的数值时 它没办法在计算了 比如 计算 10000000000000000 +1
我得到的还是 10000000000000000我怀疑是不是atof 这个函数 是不是有相关的 精度问题 我把那个加的代码 贴下::其中 1025 是 加 这个按钮的ID 1029 是等于这个 按钮的ID m_st02是全局的CString类型 m_y,m_x,m 是double 类型 IDC_EDIT1 这个是编辑框的ID switch(nID)
{
case 1025: //加
GetDlgItemText(IDC_EDIT1,m_st02);
m_x=atof(m_st02);
SetDlgItemText(IDC_EDIT1,"");
m_st02="";
m_count=4;
case 1029: //等于
GetDlgItemText(IDC_EDIT1,m_st02);
m_y=atof(m_st02); switch(m_count)
{
case 4: m=m_x+m_y;
m_st02.Format("%f",m);
SetDlgItemText(IDC_EDIT1,m_st02);
break;
}
break;}如果高手想看全部代码的话 希望能加我QQ 1006817093 无知的笨蛋在此 谢谢 各位!
我得到的还是 10000000000000000我怀疑是不是atof 这个函数 是不是有相关的 精度问题 我把那个加的代码 贴下::其中 1025 是 加 这个按钮的ID 1029 是等于这个 按钮的ID m_st02是全局的CString类型 m_y,m_x,m 是double 类型 IDC_EDIT1 这个是编辑框的ID switch(nID)
{
case 1025: //加
GetDlgItemText(IDC_EDIT1,m_st02);
m_x=atof(m_st02);
SetDlgItemText(IDC_EDIT1,"");
m_st02="";
m_count=4;
case 1029: //等于
GetDlgItemText(IDC_EDIT1,m_st02);
m_y=atof(m_st02); switch(m_count)
{
case 4: m=m_x+m_y;
m_st02.Format("%f",m);
SetDlgItemText(IDC_EDIT1,m_st02);
break;
}
break;}如果高手想看全部代码的话 希望能加我QQ 1006817093 无知的笨蛋在此 谢谢 各位!
m_st02.Format("%18.10f",m);
_int64 i = _atoi64(c);
i++;