C++0x 9at TECH
C++0x 9 - 暇つぶし2ch133:デフォルトの名無しさん
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);
    }


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch