eprec static method

double eprec(
  1. double x
)

Implementation

static double eprec( double x ){
	int p, q;
	double t, i;

	if( isInf( x ) || isNan( x ) || isZero( x ) ){
		return 0;
	}

	q = 0;
	for( p = 0; ; p++ ){
		t = x * pow( 10.0, p.toDouble() );
		i = toInt( t );
		if( (t - i) == 0.0 ){
			break;
		}
		if( i == 0 ){
			q++;
		}
	}

	if( q == 0 ){
		return p + toInt( log( abs( x ) ) * normalize )/*整数部の桁数-1*/;
	}
	return (p - q).toDouble();
}