c-在地板上使用pow时为什么会得到意外的输出?

因此,我在代码块上运行了以下代码:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int a;
    a=pow(10,9);
    cout<<a<<endl;
    a=ceil(pow(10,9));
    cout<<a<<endl;
    a=floor(pow(10,9));
    cout<<a<<endl;
    return 0;
}

我得到的输出为:

 999999999
 100000000
 100000000

由于截断效应,第一输出不是10 ^ 9,这意味着pow(10,9)类似于
999999999.99999 ..,那么这东西的底面是1000000000?

解决方法:

实际上,int的最大值是2,147,483,647,因此不应有溢出或截断(这是一个int).我的输出正好是:

1000000000
1000000000
1000000000

上一篇:Python——列表、元祖、字典、集合的基本操作


下一篇:js随机数, 范围随机数