我正在维护C项目,但我不是C的家人。我遇到了一个问题,我们使用CString将double值转换为字符串
CString
double
double Dose; CString Dose2; if(Dose>0) { Dose2.Format("%f",Dose); }else{ Dose2.Format("0"); }
当我在格式为%f的代码行后设置断点时,前后的值完全不同。你能解释为什么会出现这个问题吗?有时字符串值是正确的,有时不正确。之前
%f
之后
u4vypkhs1#
我试图在格式化字符串之前将Dose值写入文件,它也有很大的值。
Dose
FILE *fpversion; fpversion = fopen("doserate.txt", "a"); fprintf(fpversion, "%f", Dose); fclose(fpversion);
我看一下源代码中设置Dose值的另一个对话框。
if(m_MapDlg.GetSafeHwnd()!=NULL) { m_MapDlg.Dose=Result; }
我尝试创建函数来将Dose值设置为
void CMapDlg::SetDose(double dose) { this->Dose = dose; }
并替换
m_MapDlg.Dose=Result;
由
m_MapDlg.SetDose(Result);
Dose值得到了校正值。我把我的解决方案告诉了关心我的人。感谢@乔纳森·莱弗勒的建议。
1条答案
按热度按时间u4vypkhs1#
我试图在格式化字符串之前将
Dose
值写入文件,它也有很大的值。我看一下源代码中设置
Dose
值的另一个对话框。我尝试创建函数来将
Dose
值设置为并替换
由
Dose
值得到了校正值。我把我的解决方案告诉了关心我的人。
感谢@乔纳森·莱弗勒的建议。