我当前在尝试在 C++ 中将变量从 double 类型转换为 int 时遇到问题。当使用 static_cast 或 int() 运算符进行转换时,结果似乎不正确。有人可以指导我如何正确执行此转换吗?
#include <iostream>
int main() {
double myDouble = 3.14;
int myInt = static_cast<int>(myDouble); // Also tried int(myDouble)
std::cout << "Value of myInt: " << myInt << std::endl;
return 0;
}
此处,即使“myDouble”具有小数值,“myInt”的值也始终显示为 3。我怎样才能正确执行此转换?
您面临的问题与将 double 转换为 int 时发生的截断有关。在此转换过程中,双精度型的小数部分将被丢弃。
如果要将双精度舍入到最接近的整数,可以使用
<cmath>
标头中的 round() 函数。这是代码的更新版本:
#include <iostream>
#include <cmath>
int main() {
double myDouble = 3.14;
int myInt = static_cast<int>(std::round(myDouble));
std::cout << "Value of myInt: " << myInt << std::endl;
return 0;
}
现在,std::round() 用于在转换为 int 之前将 double 舍入到最接近的整数。这应该会给你想要的结果。