c++ - 在c++中非法使用 float

标签 c++ floating-point

我在程序中遇到非法使用 float 错误:

#include<iostream.h>
#include<conio.h>
#include<math.h>

void main()
{
 clrscr();

 int number,reverse,check,i,j,k=0,x;

 cout<<"Please enter number: ";
 cin>>number;

 //Obtaining no. of digits:
 for(i=1;check==0;i++)
 {
  check/=10;
 }

 //Reversing number:
 if(i%2==0)    //case even digits
 {  for(j=i;j>0;j--)
    {

    x=(number%pow(10,j))/pow(10,j-1);       //here
    reverse+=x*pow(10,k);
    k++;
    }
 }

 cout<<"Reverse number: "<<reverse;

 getch();
} 

我不知道为什么会出现这个错误,如果有人能帮我解决这个问题就太好了

最佳答案

pow 是一个返回 double 的函数。而 C++ modulo operator % 仅适用于整数。那是因为数学模运算符是为整数定义的。因此,非法使用

此外,您使用了未初始化的check 变量。在使用前初始化所有变量,以避免进一步的意外。

编辑

这里还有一些其他要做的更正:

check = number 在第一个 for 循环之前。

for(i = 0; check != 0; i++)

最后,尝试找到另一种方法来获取数字的数字,而不是使用 pow使用连续整数除法的简单方法。

关于c++ - 在c++中非法使用 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41787532/

相关文章:

c++ - 在预览中缩放图像

c++ - 使用 XCode 4 构建 Boost C++ 库(手动不工作)

c++ - 使用 EBP 从堆栈中获取参数

c - float 与 c 中的双重奇怪行为

language-agnostic - 对于 IEEE-754,0 < ABS(const) < 1,(x/const) * const 是否保证为 X 的不同值返回不同的结果?

c++ - 为什么 std::iota 不是 constexpr?

c - float 结果不正确

java - 浮点错误

c - 我们可以在常规寄存器中存储浮点吗?

c++ - 有没有可能的方法来强制使用字符串文字进行隐式构造函数初始化