问题描述
我想知道是否有办法让这个代码只接受整数,如果你输入一个带有小数的数字,这是错误的代码:
if (anio % 4 == 0) {
std::cout << "El anio "<<anio<<" es un anio biciesto" << '\n';
return 0;
}
else if (anio % 100 == 0) {
std::cout << "El anio "<<anio<<" no es un anio biciesto" << '\n';
return 0;
}
else if (anio % 100 == 0 && anio % 400 == 0) {
std::cout << "El anio "<<anio<<" es un anio biciesto" << '\n';
return 0;
}
else{
std::cout << "El anio "<<anio<<" no es un anio biciesto" << '\n';
return 0;
}
}
std::cout << "El anio que digito no es valido para el programa,debe ser un digito menor o igual a 500" << '\n';
std::cout << "Quiere digitar otro anio? Digite 1 para volver a intentar o digite cualquier numero para salir del programa" << '\n';
std::cin >> opcion;
system("cls");
} while(opcion==1);
getchar();
return 0;
}
解决方法
您可以使 anio
成为 float
并使用 std::modf
来检测它是否为整数。
#include <cmath>
#include <iostream>
#include <stdexcept>
int main(int argc,char *argv[]) {
float anio;
std::cin >> anio;
if (std::modf(anio,&anio) != 0f)
throw std::invalid_argument("El año debe ser un número entero");
// do stuff
}