0

我在 C++ 方面相当缺乏经验,我正在设计一个需要整数的程序,但需要成为整数的值也可以是浮点数,这取决于用户的选择。我还没有找到有关如何执行这些功能的任何信息。基本上我的代码如下所示:

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

我需要在 switch 语句之前检查它是否是整数。请帮忙。

4

3 回答 3

1

您可以使用以下方法对其进行测试:

if( a == (int)a ) { /*is integer*/ } else { /*not an integer*/ }
于 2013-10-31T19:47:16.690 回答
0

一种可能的方法是使用使用 floor() 函数,然后比较:

if(floor(a) == a) { .... }
于 2013-10-31T19:47:05.040 回答
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 回答