我遇到了双号没有正确转换为整数的问题。
在这种情况下 - >
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。
答案 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;
}