C++ 中的类型转换问题

问题描述 投票:0回答:1

我当前在尝试在 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。我怎样才能正确执行此转换?

c++ casting
1个回答
0
投票

您面临的问题与将 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 舍入到最接近的整数。这应该会给你想要的结果。

© www.soinside.com 2019 - 2024. All rights reserved.