c/c++で文字列への変換無しで小数点以下の桁数を求めたいです。
e.g)
1.0 -> 0
1.1 -> 1
0.001 -> 3

float x= 0.4002;
int i=0;
while( x != floor(x) )
{
  x*=10;
  ++i;
}

一応こんな方法は思いついたのですが、
浮動小数だと正確に10倍されずに正しい桁数が出ないことが判明したので 正確に小数点以下の桁数を求める方法があれば教えてください。