• ベストアンサー

VC++で四捨五入

こんにちは。 Microsoft Visual C++ 2003.NETで、Windowsフォームアプリケーションを作っています。 そこで、ある計算をさせて、答えをdouble型の変数に入れたのですが、答えが「0.99999...」や「1.548932...」のように、延々となってしまいます。かといってint型にすると、小数を扱えないので… 出来れば小数第三位くらいで四捨五入したいのですが、VC++にはそのような際に便利な関数はあるのでしょうか? 初歩的な質問で申し訳ありませんが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

通貨型・・はなかったですかね(汗 1000倍した数値でint型で計算して結果を3桁ずらして使うのが吉でしょうね。ずらすといっても結果を1000で割ったらダメですよ。実数値なので「1/1000は表現できない」ですから。

weltel
質問者

お礼

うーん、関数は無いのですね… わかりました!アドバイスありがとうございます!

関連するQ&A

  • 小数第1位を四捨五入

    ちょっと混乱してしまったので質問させてください。 エクセルの関数の練習問題集をやってまして、その中で 「小数第1位を四捨五入する」 「小数第1位を切り上げる」 という表現が出てくるのですが、これの答えは小数第1位までの数字になりますか? それとも、小数点なしの数字になりますか? たとえば1.562という数字ならば、上記の四捨五入の場合答えは2になりますか? それとも1.6でしょうか? 学校で数学を習ったのがかなり昔なので、表現がわからなくなりました(^_^;)

  • 算数の四捨五入が分かりません

    小学生レベルの四捨五入の問題なのですが、 (1) 0.75を小数第一位で四捨五入し、整数で表せ (2) 0.01を小数第二位で四捨五入し、小数第一で表せ (3) 4.2を小数第一位で四捨五入し、整数で表せ などという問題が、昔のことですっかり忘れてしまって分からない状態なんです。 ちなみに(1)の答えは『1』なんじゃないかな、と考えたりもしたのですが違うのでしょうか? このような四捨五入の仕方を教えていただけると助かります。 明日までにどうしても解かなければならないので、回答宜しくお願いします!

  • 小数点の四捨五入で分からないことがあります

    例えば、0.230978という値を小数点第4位を四捨五入したら、答えは0.231ですか?それとも0.2310が答えですか? また、0.8という値を小数点第1位を四捨五入したら、答えは1.0ですか?それとも1ですか? よろしくお願いします。

  • 四捨五入で計算された数字を、整数で返す関数を教えてください。

    エクセルで見積金額をだす時に、小数点以下非表示で計算すれば、100.4+100.9+100.4=301.7 302となります。 関数を使い小数点第1位四捨五入で、これを301にしたいのです。 小数点第一位を四捨五入して整数で返すと言うのでしょうか? (小数以下斬り捨てだと、300になります。INT関数がそうなのでしょうか?) すみません、関数がまだ良く分かりません。間違っていたり説明がまずかったなら、ごめんなさい。

  • √4.4≒2.10(小数第三位を四捨五入)の、2.10の求め方が分かり

    √4.4≒2.10(小数第三位を四捨五入)の、2.10の求め方が分かりません。 かなり初歩的な質問ですが、回答宜しくお願いします・・・。

  • 四捨五入関数を作りたい

    Cでdouble型の数値の四捨五入を考えています。 小数点7桁目を四捨五入したいです。 1000000倍して0.5足して切り捨てる やり方が載っていました。 しかし1000000倍した時に誤差で「.3999999」となる ことがあるようです。 どうやったら回避できるのでしょうか。

  • 四捨五入の仕方

    2.25490196と10.69767441を小数点以下、四捨五入すると答えはいくつですか? 四捨五入って・・・?と恥ずかしながらパニックです。 2.0と11ですか? 回答お願いします\(+×+)/

  • Access2003で小数点第1位未満四捨五入

    Access2003で小数点第1位未満四捨五入の表示をするにはどうしたらいいのでしょうか?int関数を使用して平均点の四捨五入をしたのですが、整数エラーになります。Roundsも使ったり色々やったのですが、どうやら違うようなので、困っています。助けて下さ~い。

  • 四捨五入について質問

    四捨五入とは、TOMACの用語集で『必要な位の1つ下の位の数が4,3,2,1,0のときは切り捨て、5,6,7,8,9のときは切り上げること』と書かれていました。 そのTOMACの用語集で下記の実例も一緒に掲載されていました。 --実例引用-- 四捨五入によって小数第1位までの概数を求める 25.38→25.4 301.049→301.0 --実例引用終了-- 質問:TOMAC用語集の解説で『必要な位』とありましたが、これは"求める位"を指すのでしょうか? 例えば上記の実例引用の『小数第一位までの概数を求める』であれば、 小数第一位までの数25.4や301.0がTOMACの用語集に記載された『必要な位(求める位)』ですよね? 質問2:『四捨五入によって237934を千の位までの概数にしましょう』という問題文の場合、答えは『238000』ですよね? 質問3:『小数点以下第2位を四捨五入する』とは『小数第2位を四捨五入をして5以上であればその1つ上の位である小数第1位に1を加え、4以下であれば切り捨てる』ってことですよね?

  • 四捨五入をするメソッドを実装したい(Java)

    Math.round()のように小数点以下を四捨五入するメソッド作りたいです。 できれば、数値計算(数学的に?)で実数を処理したいです。 自分で作れたのはintで型キャストするやり方で、あまり納得していません。 うまく数学的な処理で小数点以下を判別して、四捨五入の結果を返すことはできませんか? ちなみに自作したものはこんなかんじです↓。 public class MyRoundTest {    // 四捨五入    static int myRound(double d){       int sign = (d < 0) ? -1 : 1;       double mid = (int)(d)+sign*0.5;       return (d*sign >= mid*sign)? (int)d+sign: (int)d;    }    public static void main(String[] args){       double[] d = {2.4, 2.5, -2.4, -2.5, 4.5};       for(double element : d){          System.out.println(element+"\t→\t"+myRound(element));       }    } } /* 出力結果は 2.4 → 2 2.5 → 3 -2.4 → -2 -2.5 → -3 4.5 → 5 です。 */

    • ベストアンサー
    • Java

専門家に質問してみよう