5

3%gを使用できるprintf関数には、floatが3.00の場合は整数を表示し、3.01実際にfloatであるかどうかを表示する関数がありますが、コードを使用してこれを実行する方法はありますか?

4

1 に答える 1

8

本当に簡単な答えはありません

積分値は、floatおよびdouble形式で正確に表現されます。したがって、それが本当にすでに不可欠である場合は、次を使用できます。

f == floor(f)

ただし、値が、ある時点でゼロ以外の小数部分を含む計算の結果である場合は、整数に非常に近いものがある可能性があるが、実際にはそうではないことを心配する必要があります。 、最後まで同じ。あなたはおそらくそれが不可欠であると考えたいでしょう。

これを行う1つの方法:

fabs(f - round(f)) < 0.000001

そして、私たちが主題に取り組んでいる間、純粋主義者にとって、またははFPUモードに従って丸められるのに対し、round(3)はゼロから半分のケースを丸めることに注意するint i = f;必要があります。double i = f;

于 2013-03-09T17:40:59.500 に答える