用c ++编写的程序告诉数字是整数还是浮点数

时间:2014-07-14 10:08:57

标签: c++

我使用函数重载来检查输入数字是整数还是浮点数。但是我得到以下错误: 错误:调用重载'retNr(double)'是不明确的|

#include <iostream>
using namespace std;

void retNr(int x)
{
    cout << "The entered number is an integer. " << endl;
}

void retNr(float x)
{
    cout << "The entered number is a float. " << endl;
}

int main()
{
    cout << "Please enter a number: " << endl;
    cin >> nr;
    retNr(nr);
    return 0;
}

7 个答案:

答案 0 :(得分:3)

从cin读取字符串,然后检查字符串是否存在小数点。如果有小数点,请在字符串上调用 atof()将其转换为浮点数,否则调用 atoi()将其转换为整数。

答案 1 :(得分:1)

您必须先初始化nr

然后你可以使用整数读&amp;如果有点,请用浮点数检查,即ch =='。'

因此,你的程序将是这样的:

#include <iostream>
using namespace std;

int main()
{
    int nr = 0; char ch;
    cout << "Please enter a number: " << endl;
    cin >> nr;
    cin.get(ch);
    if(ch=='.')
    {
        cout << "The entered number is a float. " << endl;
    }
    else
    {
         cout << "The entered number is an integer. " << endl;
    }


    return 0;
}

答案 2 :(得分:1)

进行一些小改动:

void retNr(double x)
{
    cout << "The entered number is a double. " << endl;
}

请务必声明您的nr变量。

double d = 1.0;
int i = 1;

retNr(d);
retNr(i);

答案 3 :(得分:1)

您可以使用abs()函数解决此问题。

#include<stdio.h>
#include<math.h>

int main()
{
   double input;
   scanf("%lf",&input);

   int absulate = abs(input);
   printf( (input==absulate)? "It is integer\n" : "It is float");

   return 0;
}

答案 4 :(得分:0)

这个问题本质上是错误的:一个数字,它不是一个浮点数或一个整数,但可以表示为浮点数或整数(当然某些表示有一些限制) 所以如果我写'10'为什么我要说这是一个整数?可能也是一个浮动!如果我想将它用作浮点数,我会把它表示为浮点数。

答案 5 :(得分:0)

你所要求的并不是很清楚。如果你真的想要 要知道数字是否为整数,请使用modf 在它上面:

bool
isInt( double d )
{
    double dummy;
    return modf( d, &dummy ) == 0.0;
}

如果您正在阅读某个数字,请将其作为double阅读,然后再阅读 使用上面的。

如果您想触发输入格式(即 "10.0"将被视为浮点,即使它是 一个整数),然后将输入作为字符串读取,然后尝试 将其转换为int;如果这吃了所有的输入,那就是 输入为int(无小数或指数),否则,请尝试 将其视为double

std::string entry;
std::cin >> entry;

char const* end;
long i = strtol( entry.c_str(), &end, 10 );
if ( *end == '\0' ) {
    //  entry was entered in integral format...
} else {
    double d = strtod( entry.c_str(), &end );
    if ( *end == '\0' ) {
        //  entry was entered in floating point format...
    } else {
        //  entry wasn't a number...
    }
}
但是,我建议不要这样做;它只会混淆你的 用户如果0不是0.0

答案 6 :(得分:0)

float num = 7;
int n = (int)num;
float n1 = (float)n;
if(num == n1)
{
    cout << "Integer\n";
}
else
{
    cout << "Not Integer\n";
}