質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

4回答

7808閲覧

C言語の指定桁数で四捨五入

nana508

総合スコア7

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/04/30 10:32

少数第二位を四捨五入して小数点以下第一位にしたいのですが、やり方がわかりません。

以下のようなものを試してみましたが、例えば、59.98と入れたときに、59になってしまいます・・・

C

1#include <stdio.h> 2int main(void){ 3 double s; 4 int d; 5 scanf("%lf",&s); 6 d=(int)(s*10+0.5)%10; 7 8 printf("%d.%d",(int)s,d); 9 10 return 0; 11} 12

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

「C言語 四捨五入」で検索してください。

C言語Tips集 - 小数点以下を四捨五入する

投稿2018/04/30 10:54

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nana508

2018/04/30 13:43

整数にしたいわけではなく、小数点以下第一位にしたいのですが調べてもあまりでてきません。
Zuishin

2018/04/30 13:47

100 倍して 5 を足して 1 の位を切り捨てて 100 で割ればいいだけです。 自分の求めるそのものが検索できなければ少しだけ応用しましょう。
nana508

2018/04/30 13:48

すみません、書いてありましたね。
guest

0

ベストアンサー

c

1int tmp = s * 10 + 0.5; 2printf("%d.%d", tmp/10, tmp%10); 3//60.0

投稿2018/04/30 12:58

gingertail

総合スコア317

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

処理系依存かもしれませんが、double型は丸め誤差がどうしても存在します。
例えば、

C

1double x = 49.65;

とした時、実際にxに代入される値は「49.6499999…」になりました。
(Windows 7/Visual Studio 2015で確認。)
この数値に対してround関数等を用いて四捨五入をすると、正しく処理出来ない可能性があります。

という訳で、厳密に計算したいなら入力を文字列として受け取り、下記の流れで処理する必要が有るかと思います。

  1. 値sを文字列として入力。
  2. 小数点以下1桁目を整数に変換。
  3. 小数点以下2桁目が5以上なら、2.で読み込んだ値に1を加算。

投稿2018/04/30 12:30

rtr1950x

総合スコア298

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こちらの環境では、 59.58 と入力して 59.6 となりましたが、、
59.98 と入力すると、59.0 ですね。

(int)s --> これは、切り捨てになります。
従って、 (int) (s + 0.05) でしょうか? (小数 第二位で四捨五入)
他にも方法はありそうですが。

投稿2018/04/30 10:41

pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問