10/04/02 13:25:02
誰かたすけて~。
doubleで10のN乗をmath.hのPowで実装したんだが、N=100位で何でか細かい誤差が出る。
doubleから、指数部を切った値(=残った仮数部)をとる方法無いだろうか。なるべく誤差の出ない方法で・・・。
Decimal& operator =(double Val){
Sign_ = (Val<0)? false:true;
if(Sign_ == false) Val*=-1;
Digit_=static_cast<long long int>(log(Val)/log(10.0));//これで、Log10(Val)になるらしい。
int VD= static_cast<int>((log(static_cast<long double>(Val))/log(10.0)));
int ID= static_cast<int>((log(static_cast<double>(static_cast<unsigned int>(-1)))/log(10.0)));
double Pow = (VD>=ID) ? pow(10.0,(VD-ID)):1;
Value_ = Val / Pow;
return (*this);
}