我在 C++ 方面相当缺乏经验,我正在设计一个需要整数的程序,但需要成为整数的值也可以是浮点数,这取决于用户的选择。我还没有找到有关如何执行这些功能的任何信息。基本上我的代码如下所示:
float a;
cin >> a;
switch (a) {
case 1:
break;
case 2:
break;
default:
break;
}
我需要在 switch 语句之前检查它是否是整数。请帮忙。
您可以使用以下方法对其进行测试:
if( a == (int)a ) { /*is integer*/ } else { /*not an integer*/ }
一种可能的方法是使用使用 floor() 函数,然后比较:
if(floor(a) == a) { .... }
这会让你接近
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
。