🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

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

Q&A

解決済

2回答

1344閲覧

C言語 double型→char[]型へ変換 小数点以下の".000"を消す

退会済みユーザー

退会済みユーザー

総合スコア0

C

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

0グッド

0クリップ

投稿2021/03/08 09:32

編集2021/03/09 08:14

中学校で,コンピュータ部に所属している者です。

sprintf()関数を(例えば)以下のソース(C言語としてコンパイル)のように使うと,

C言語

1#include <stdio.h> 2 3int main() 4{ 5 double value = 2; 6 char str[21]; 7 8 sprintf(str , "%lf" , value); //'value'(2)を文字列に変換 9 puts(str); //'str'をDOS窓に出力 10 11 //以降,後処理 12 (void)getchar(); 13 return 0; 14} 15//EOF

DOS窓に"2.000000"と出力されます(つまり'str'が"2.000000"となっている)。
今作っているプログラムで,上記のソースでいう'value'が,整数だったり小数だったりするのですが(小数点以下も可変長),
整数が代入された場合 毎回'str'が"x.000000"となるのはうざいので,
これを回避するにはどうすればいいのか御回答お願いします。
'value'が小数なのか整数なのか判別するプログラムでも構いません。

よろしくお願いします。


OS : Microsoft Windows10 Home
Cコンパイラ : MinGW-W64gcc

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

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

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

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

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

fana

2021/03/08 09:40

> char str; ここがタイトルとも異なっており,提示コードに誤りがあるように見えます. 間違いであれば修正すると良いかと.
PingHermit

2021/03/08 12:26

本題とは関係ないのでこっちに。 rewind(stdin); は、stdin には使わないほうがいいですよ。 ファイルリダイレクトなどされると、最初の1行目に戻ったりします。 http://www9.plala.or.jp/sgwr-t/lib/rewind.html
guest

回答2

0

これを試してみたら、どうですか。

C

1 sprintf(str, "%g", value);

その前に、char str; じゃダメでしょう。コンパイラはエラーか警告を出すはずだけど。

投稿2021/03/08 11:38

rubato6809

総合スコア1382

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

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

0

ベストアンサー

(入力される値の整数部分がintに収まる範囲内である事が確実であるなら)
intにキャストすれば、小数点以下は切り捨てられるので、それと比較すれば、
整数かどうかはわかります。

投稿2021/03/08 10:10

編集2021/03/08 12:07
amiya

総合スコア1218

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

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

退会済みユーザー

退会済みユーザー

2021/03/08 11:11

キャストすればよかったのか。。。 回答ありがとうございます!
actorbug

2021/03/08 11:59

INT_MAXを超えると判定できなくなりませんか
amiya

2021/03/08 12:05

確かに…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問