我使用函数重载来检查输入数字是整数还是浮点数。但是我得到以下错误: 错误:调用重载'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;
}
答案 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";
}