0

私は C++ の経験がかなり浅く、整数を必要とするプログラムを設計していますが、整数にする必要がある値は浮動小数点数にすることもできます。ユーザーの選択によって異なります。これらの機能を実行する方法については何も見つかりませんでした。基本的に、私のコードは次のようになります。

float a;
cin >> a;
switch (a) {
case 1:
    break;
case 2:    
    break;
default:
    break;
}

また、switch ステートメントの前に整数かどうかを確認する必要があります。助けてください。

4

3 に答える 3

0

これで近づきます

if (std::round(a) == a) { ... }

浮動小数点表現は、実際の数値よりもわずかに上または下になる可能性があるため、より良い解決策は次のようになります。

double EPSILON = 0.0000000001;
if (std::abs(std::round(a) - a) < EPSILON) { ... }

浮動小数点数の目的の精度に設定EPSILONする場所 (たとえば、小数点以下 8 桁まで正確にしたい場合は、 を設定しますEPSILON = 0.00000001)。このように、数値が4.999999999999934566( に非常に近い5) の場合、 と表示され5ます。さらに、それが5.000000000000000234である場合でも、 として表示され5ます。

于 2013-10-31T19:52:08.643 に答える