c++ - 使用 'int' 数据类型时出错,即使数字不是小数

标签 c++ int

我了解 int、float 和 double 数据类型之间的区别。但我观察到,有时当我在仅包含整数值的数学运算中使用“int”数据类型时,它给出的结果比正确答案小一。但是,当我使用 float 或 double 时它是正确的。

看看下面的代码。

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

using namespace std;

int getno(int num)
{
    int x,i;
    float y=0;
    for(i=0; i<4; i++)
    {
        x=num%10;
        y=y+(x*pow(10,i));
        num=num/10;
        cout<<x*pow(10,i)<<endl;
        cout<<y<<endl;
    }
    return y;
}

main()
{
    int n;
    cin>>n;
    cout<<getno(n);
}

如果我将 y 的数据类型更改为 int,它会给出一个错误的答案。即 12345 将导致 2344 而不是所需的 2345。为什么会这样?

最佳答案

我想“pow(10, i)”返回的值比 10^i 小一点,假设 i=3 时为 999.9999999。

然后它被 float->int 转换为 99 截断。因此,我们可以在每个“y=..”操作中损失 1。

关于c++ - 使用 'int' 数据类型时出错,即使数字不是小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16972679/

相关文章:

c++ - 关于变量类型 "double"的问题

c++算法 - count_if对象中的第三个参数

c# - 使用约束 delaunay 三角剖分对多边形进行三角剖分

java - 在Java中将日期从字符串转换为int

c++ - int 值从 0 跳到 32679 没有变化

Java 字节数组并将 int 复制到其中

c++ - 复制整数数组与指向 boolean 值的指针

c++ - 我认为 N4140 §8.5[dcl.init]/17 中的要点 (17.6.2) 可能有一点不准确

c++ - 如何查找 float 是否等于 C++ 中的整数值

c++ - 链接时库依赖项如何工作?