在 C++ 中,将 double
类型转换为 int
类型时,会进行截断(truncation),即直接丢弃小数部分,而不是进行向上取整或向下取整。这种转换方式实际上是向零取整,即小数部分被直接舍去,只保留整数部分。
示例
cpp复制
#include <iostream>
using namespace std;
int main() {
double positive = 3.7;
double negative = -3.7;
int int_positive = static_cast<int>(positive);
int int_negative = static_cast<int>(negative);
cout << "3.7 converted to int is " << int_positive << endl; // 输出 3
cout << "-3.7 converted to int is " << int_negative << endl; // 输出 -3
return 0;
}
代码解释
-
定义变量:定义两个
double
类型的变量positive
和negative
,分别赋值为3.7
和-3.7
。 -
类型转换:使用
static_cast<int>
将double
类型的变量转换为int
类型。 -
输出结果:
-
3.7
转换为int
时,结果为3
。 -
-3.7
转换为int
时,结果为-3
。
-
总结
-
正数:
3.7
转换为int
时,小数部分被舍去,结果为3
。 -
负数:
-3.7
转换为int
时,小数部分被舍去,结果为-3
。
这种转换方式是向零取整,而不是向上取整或向下取整。如果你需要进行向上取整或向下取整,可以使用 <cmath>
库中的 ceil
或 floor
函数,然后再进行类型转换。
向上取整和向下取整的示例
向上取整
cpp复制
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double number = 3.7;
int ceil_int = static_cast<int>(ceil(number));
cout << "3.7 rounded up to int is " << ceil_int << endl; // 输出 4
return 0;
}
向下取整
cpp复制
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double number = 3.7;
int floor_int = static_cast<int>(floor(number));
cout << "3.7 rounded down to int is " << floor_int << endl; // 输出 3
return 0;
}
希望这些示例能帮助你理解 double
到 int
的转换行为!(本人个人AI的笔记而已)