2017-04-25 14 views
-2

二重変数から末尾のゼロを削除し、その結果を二重変数に戻すことを検討しています。C++:二重変数の小数部から末尾のゼロを削除する

私は(%gを有するのsnprintf、COUTかのprintfを使用して)プリントアウトして見ているわけではないC++ 98

  • の午前

    1. ことに注意してください。私は末尾のゼロを削除し、残りの部分をdouble変数に戻したいと考えています。

    入力:ダブル(例えば100.250または100.1010または100.375)

    出力:ダブル(100.25、100.101、100.375)

    例えば

    double Price = 100.250; 
    double convert = TrimZeros(100.250); 
    // convert = 100.25 
    
    • 私が変換しようとしましたストリングストリームに2倍し、そのストリングの末尾のゼロをトリムします。しかし、私はそれを必要な精度でトリミングした後に倍に戻すことはできません。

    double Price = 100.250; 
    ostringstream osPrice; 
    osPrice << fixed << Price; 
    string cPrice = TrimString(osPrice.str()); // my function to trim trailing zero of string 
    //cPrice = "100.25" 
    
    // Now When I try to convert cPrice back to double, it adds extra zeros i.e. 100.250000 
    

    私は何も、即ち と元気です - 二重の後続ゼロをトリミングし、バックダブル変数に残りを割り当てる直接機能。

    OR

    • 、文字列に二重に変換した文字列からゼロをトリミングして倍増し、適切にそれをバックに変換。

    助けてください。

  • +2

    Um ...実際にあなたが記述する方法で数字の数字を削除することはできません。文字列表現に末尾のゼロを入れたくない場合は、文字列が現れたら削除してください。 – InternetAussie

    +1

    末尾のゼロは番号に影響しません。なぜそれらを削除するのですか? '1。 == 1.0 == 1.00 == 1.000 == ... '。 – NathanOliver

    +0

    ここでのユースケースは何ですか? – CinCout

    答えて

    2

    のようなタイプdoubleのような値は表現ではなく、値を保持します。 100,100.0およびone hundredおよび10x10は、すべて同じ値の異なる表現である。だから、あなたがしようとしているのは意味をなさないカテゴリエラーです。それは、彼がベース16

    // Now When I try to convert cPrice back to double, it adds extra zeros i.e. 100.250000 
    

    で10台を持つことができる場合は10台を持っている人に尋ねるようなものだ

    は、あなたがこれを決定する方法を示しています。それは不可能なので。その価値は百四半期になります。あなたは自分の目的に合った方法で表現することができます。

    int i = 2;を実行すると、ベース10の値はiになりますか?それともバイナリですか?それともローマ数字ですか?それはそのようなものではありません。 の番号はです。あなたの手の数。

    +0

    is 'double x = 1; 'と' int y = 1; '同じ値の2つの異なる表現? – user463035818

    +0

    hm私は自分の書いた内容と矛盾していないと思います。「二重保持値のような型は表現ではない」と私の場合は「x」と「y」は2つの表現ですが、同じ値(つまり、 'double')で表現された異なる値だけです。これが意味をなさないかどうかは確かではありません.... – user463035818

    +0

    物質に間違っています。 '二重保持値のような型であり、表現ではない型は間違っています。彼らは確かに価値の表現を保持しています。 – SergeyA

    関連する問題