用c++或MFC怎样判断一个double有几位小数

比如一个数是225.3596,
则用什么可以判断这个数有4位小数,在线等

第1个回答  2010-08-10
CString tmp;
double a = 225.3596;
tmp.Format("%f",a);

while (tmp.Mid(tmp.GetLength()-1).Compare("0")==0)//去掉小数点后末尾的0
{
tmp = tmp.Mid(0,tmp.GetLength()-1);
}
int i = tmp.GetLength() - tmp.Find(".") - 1;

这个没有判断如果没有小数点的情况,,,,本回答被提问者采纳
第2个回答  2010-08-10
你这个问题从逻辑上说本来就不成立的。计算机里面表示的浮点数不可能有“几位小数”的说法。只有变成了字符串,你才可以这样问。而从浮点数到字符串的转换这个过程中,本身就隐含着“你想精确到多少位”的问题。
第3个回答  2010-08-10
如果是字符串存储的话,很简单。

double的话,比较麻烦。
因为double型的数字,绝大多数在内部都不能精确表示,和自己设置时数字都会有所误差,从而导致结果不对,或者需要做一些假定,进行误差判断,然后逐次收敛,去判断位数。
第4个回答  2010-08-10
浮点数没有确切的值的
只能取它的精度
相似回答