从double转换为整数

时间:2014-06-14 17:57:33

标签: c++ integer decimal pow

我遇到了双号没有正确转换为整数的问题。

在这种情况下 - >

int x=1000;

double cuberoot=pow(x,(1/(double)3));

int a=cuberoot;

cout<<"cuberoot="<<cuberoot<<endl;

cout<<"a="<<a<<endl;

输出:

cuberoot=10
a=9

为什么这里a = 9而不是10?

解决这个问题的方法吗?

另外我不想舍入值...如果a = 3.67那么它应该只转换为3  而不是4。

2 个答案:

答案 0 :(得分:1)

因为cuberoot非常接近10而不是10。std::cout截断并将数字舍入为10,但是从整数到整数转换将删除小数,这就是为什么{{1} }。要解决此问题,您可以使用a = 9

std::round()

答案 1 :(得分:0)

试试这个,看看为什么!

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

int main(){
    int x = 1000;
    double cube = pow(x, 1.0/3.0);
    int a = cube;
    cout<<"cube="<< fixed << setprecision(16) << cube<<endl;
    cout<<"a="<<a<<endl;
}