fstr2num method
Implementation
bool fstr2num( MPData n, String _s ){
MPData s = _d2cstr( _s );
int l = _strlen( s );
int i, j = 0;
int p = 0;
bool m = false;
MPData ss = MPData();
for( i = 0; i < l; i++ ){
if( (s.val(i) == ClipMath.char( 'e' )) || (s.val(i) == ClipMath.char( 'E' )) ){
if( p != 0 ){
p -= l - i;
}
i++;
if( s.val(i) == ClipMath.char( '-' ) ){
m = true;
i++;
} else {
m = false;
if( s.val(i) == ClipMath.char( '+' ) ){
i++;
}
}
break;
} else if( s.val(i) == ClipMath.char( '.' ) ){
p = l - (i + 1);
} else {
ss.set( j++, s.val(i) );
}
}
ss.set( j, 0 ); // 文字列終端を書き込む
if( !_str2num( n, ss ) ){
return false;
}
int e = 0;
for( ; i < l; i++ ){
if( s.val(i) >= ClipMath.charCode0 && s.val(i) <= ClipMath.charCode9 ){
e = e * 10 + (s.val(i) - ClipMath.charCode0);
} else {
return false;
}
}
if( m ){
p += e; e = 0;
} else if( p >= e ){
p -= e; e = 0;
} else {
e -= p; p = 0;
}
_setPrec( n, p );
if( e > 0 ){
MPData k = MPData();
_fcoef( k, e );
fmul( n, n, k, p );
}
return true;
}