1. ホーム
  2. c

[解決済み] floatが整数であるかどうかのチェック

2023-07-02 19:46:55

質問

を確認するにはどうすればよいですか? float 変数が整数値を含んでいるかどうかを調べるにはどうしたらよいでしょうか。今のところ、私は

float f = 4.5886;
if (f-(int)f == 0)
     printf("yes\n");
else printf("no\n");

しかし、もっと良い解決策があるのではないか、あるいはこの解決策には何か(あるいは多くの)欠点があるのではないか、と思っています。

どのように解決するのですか?

既に述べた細かい回答とは別に、あなたは ceilf(f) == f または floorf(f) == f . どちらの表現も true もし f が整数であれば また false はNaN ( NaNは常に不等間隔で比較されます。 ) と true は ±infinity を表し、切り捨てた結果を保持するために使われる整数型がオーバーフローする問題はありません。 floorf() / ceilf() 戻る float s.