• ベストアンサー

C言語

C言語で、四捨五入するにはどうすればよいのですか? 教えてください。宜しくお願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.7

#include <stdio.h> #include <math.h> int main(void){ double x=5.567789; double y; y=floor(x*100+0.5)/100; printf("x:%f round x:%f\n", x, y); return 0; }

その他の回答 (6)

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.6

ただ、10進2進変換での誤差があるので、完璧を求めるならsprintfで数字列にして四捨五入する必要があります。 例えば、0.025は二進法では無限小数になります。printfしたら0.05と出力される数値でも、コンピュータの内部では0.249999999999999といった値になっています。これを少数以下2桁で四捨五入すると0.02になってしまいます。 このような誤差が許されるなら、mathライブラリのrintを使って、 rint(a*100)/100; と、簡単に済ませればいいとおもいます。

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.5

状況によって手順は変わってきます。 扱いたい数は整数ですか浮動小数点ですか? 負の数を四捨五入することはありますか? 四捨五入したいのはどの桁ですか?

gsosba
質問者

補足

小数点以下第3桁目で四捨五入して、小数点以下第2桁目までの数値 5,567789 5,57

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

double a; int b; … b=a+0.5; //小数点以下四捨五入

回答No.3

>>2 その手がありましたね。汗

  • jppy
  • ベストアンサー率14% (14/99)
回答No.2

どこを四捨五入するのか分からんが・・・ No1さんに追加 if文を使わなくても b = a + 5 - a % 10; でどうでしょ?

回答No.1

int a に対してするとしたら・・・ a + (a % 10 >= 5 ? 10 : 0) - a % 10; #ただし、負はこれではできません。

関連するQ&A

  • C言語で

    C言語の授業で課題がでたのですがわかりません。どなたかおしえていただけないでしょうか? [問題] ある商品の原価に消費税5%を加えた金額を計算するとき、 1.切り捨て 2.切り上げ 3.四捨五入 の3つの方法がある。商品の原価をfloat型の数としてscanf()で入力し、それぞれの方法で売価を計算するプログラムを作成せよ という問題です。 原価×1.05 を計算するところまではわかるのですが、どの方法でもその先から進みません。 よろしくお願いします。

  • C言語プログラミング

    C言語プログラミングを作成したいのですが、全くわかりません… 成績処理についてのプログラミングお願いします! キーボードから試験の点数を読み込み0.5を掛ける。つぎに課題点を読み込み0. 25を掛ける。2つを加えて四捨五入してこれを授業点(75点満点)として表示。そして演習点(25点満点)を読み込み授業点に加え全体成績(100点満点)として表示する。最後に判定をして、0~59点は「不可」、60~69点は「可」、70~79点は「優」、それ以外は「入力ミス」と表示。 これをC言語プログラミングお願いします。

  • C++の四捨五入

    プログラミングで言う四捨五入とはいったいなんなのでしょうか? 丸めと四捨五入が混同していてよくわからなくなってます C++でこれは四捨五入ですか? cout << fixed << setprecision(1) << num/7.0 << endl; いままで、とはいっても初心者ですが四捨五入の時は以下のようにしていました。 cout << round((num/7.0)*10)/10 << endl; 小数点第2位を四捨五入しなさいと言われた時はどちらも同じですか?

  • プログラミング

    C言語のプログラミングで、四捨五入を作りたいのですが、ご教授いただけますか? また、良いサイトがあったら教えていただけますか?

  • c言語についての質問です。

    このような問題が出たのですが、作り方を教えてください。お願いします。 int型というやつで、scanf と printf だけを使ってプログラムを作成しなくてはなりません。問題↓ 本年4月より消費税が5%から8%に変更になった.そこで5%税込商品の金額を入力すると,税抜 商品金額及び8%の税込商品金額を表示するプログラムを作成せよ.但し,1円未満の値は 小数点以下第1位を四捨五入すること.(注:5%の税込金額も四捨五入しているので, 税抜金額を求めるとき注意すること)

  • 至急で、C言語の問題で解答解説お願いします。

    1実数を3つ(a,b,c)を読み込み3辺とする三角形ができるか判定(d(d-a)(d-b)(d-c)>0のとき三角形となる)しできなければ、三角形ではありません!というメッセージを表示し、できる場合は以下のヘロンの公式を用いて三角形の面積を求めるプログラムをC言語で答えてください。d=(a+b+c)/2 s=√{d(d-a)(d-b)(d-c) 2maxの整数値(≧1)をキーボードから入力し、その値に対応した図形を出力するプログラムをC言語で答えてください。 例 max1 max2 max3 * ** *** * ** *** * ** *** ** *** *** 3整数nをキーボード入力しnの値に応じて以下の図形を表示するプログラムをc言語で答えてください。 n=3 n=4 n=5 3 4 5 45 56 67 678 789 890 0123 1234 56789 4整数n(≧0)を入力し歯科の計算を実行するC言語プログラムを答えてください。2つの自然数nとmを読み込みn個の中からm個を取り出すときの組み合わせの数を計算せよ。ただし、n!を計算する関数long fact (int n)を定義し必ずそれを用いること。 5 1つのscanfで2つの10進数を入力し8進数と16進数で表示するプログラムをC言語で答えてください。 6 実数aを入力し少数第1位で四捨五入する関数g(a)をマクロ定義で入力した値の少数第1位を四捨五入して出力するプログラムをC言語で答えてください。 7 4つの実数w,x,y,zを読み込みその最大値を出力するプログラムをC言語で答えてください。ただし、2つの実数の大きいほうを求める関数 double my may (double x,double y)を定義し、その関数を用い、if文を用いないでc言語で答えてください。

  • C言語で・・

    実数データを入力し、小数点以下四捨五入したときの値を表示せよ。 自分では、以下のように作りました。 #include<stdio.h> int main(void) { float f_a,s; int i_a; printf("実数データを入力してください"); scanf("%f",&f_a); i_a=(int)f_a; s=f_a-i_a; if(s>=0.5){ i_a=i_a+1; } printf("%fを四捨五入すると%dです",f_a,i_a); return 0; } 他の作りかたがあれば、教えていただきたいのですが。IF文などの範囲でお願いします。

  • C言語はC言語でできている?

    C言語はC言語でできている? C言語はC言語でできていると耳にしたことがあります。 一体どういうことですか? 詳しく教えて下さい。

  • C言語とC++言語

    C言語でコンパイルできC++でコンパイルできないプログラムとその逆でC++でコンパイルできC言語でコンパイルできないプログラムを教えてください。よろしく

  • C言語の初歩的な質問です。

    例えば、 ans = 23 / 31 というように代入したいのですが、この計算を10小数点以下10行で後は切り捨て(もしくは四捨五入)を行い、その値をansに代入するというようにするにはどうすればいいんでしょうか? pirntf("%.10f", 23.0 / 31.0); じゃだめなんです。 結構急いでいます。よろしくお願いします。

専門家に質問してみよう