- ベストアンサー
C言語
- みんなの回答 (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)
ただ、10進2進変換での誤差があるので、完璧を求めるならsprintfで数字列にして四捨五入する必要があります。 例えば、0.025は二進法では無限小数になります。printfしたら0.05と出力される数値でも、コンピュータの内部では0.249999999999999といった値になっています。これを少数以下2桁で四捨五入すると0.02になってしまいます。 このような誤差が許されるなら、mathライブラリのrintを使って、 rint(a*100)/100; と、簡単に済ませればいいとおもいます。
- a-saitoh
- ベストアンサー率30% (524/1722)
状況によって手順は変わってきます。 扱いたい数は整数ですか浮動小数点ですか? 負の数を四捨五入することはありますか? 四捨五入したいのはどの桁ですか?
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
double a; int b; … b=a+0.5; //小数点以下四捨五入
- 春原 なの(@ymda)
- ベストアンサー率37% (668/1777)
>>2 その手がありましたね。汗
- jppy
- ベストアンサー率14% (14/99)
どこを四捨五入するのか分からんが・・・ No1さんに追加 if文を使わなくても b = a + 5 - a % 10; でどうでしょ?
- 春原 なの(@ymda)
- ベストアンサー率37% (668/1777)
int a に対してするとしたら・・・ a + (a % 10 >= 5 ? 10 : 0) - a % 10; #ただし、負はこれではできません。
関連するQ&A
- C言語プログラミング
C言語プログラミングを作成したいのですが、全くわかりません… 成績処理についてのプログラミングお願いします! キーボードから試験の点数を読み込み0.5を掛ける。つぎに課題点を読み込み0. 25を掛ける。2つを加えて四捨五入してこれを授業点(75点満点)として表示。そして演習点(25点満点)を読み込み授業点に加え全体成績(100点満点)として表示する。最後に判定をして、0~59点は「不可」、60~69点は「可」、70~79点は「優」、それ以外は「入力ミス」と表示。 これをC言語プログラミングお願いします。
- 締切済み
- 情報工学
- c言語についての質問です。
このような問題が出たのですが、作り方を教えてください。お願いします。 int型というやつで、scanf と printf だけを使ってプログラムを作成しなくてはなりません。問題↓ 本年4月より消費税が5%から8%に変更になった.そこで5%税込商品の金額を入力すると,税抜 商品金額及び8%の税込商品金額を表示するプログラムを作成せよ.但し,1円未満の値は 小数点以下第1位を四捨五入すること.(注:5%の税込金額も四捨五入しているので, 税抜金額を求めるとき注意すること)
- ベストアンサー
- C・C++・C#
- 至急で、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言語の初歩的な質問です。
例えば、 ans = 23 / 31 というように代入したいのですが、この計算を10小数点以下10行で後は切り捨て(もしくは四捨五入)を行い、その値をansに代入するというようにするにはどうすればいいんでしょうか? pirntf("%.10f", 23.0 / 31.0); じゃだめなんです。 結構急いでいます。よろしくお願いします。
- ベストアンサー
- C・C++・C#
補足
小数点以下第3桁目で四捨五入して、小数点以下第2桁目までの数値 5,567789 5,57