```markdown
float
转 int
在C语言中,float
类型表示单精度浮点数,而 int
类型表示整数。在某些情况下,我们需要将一个 float
类型的变量转换为 int
类型,这通常是为了舍弃浮点数的精度并获得一个整数值。
最常见的将 float
转换为 int
的方法是使用强制类型转换。这种方法会直接将浮点数的小数部分截断(舍弃),只保留整数部分。
```c
int main() { float num = 3.75; int result = (int)num; // 强制类型转换
printf("转换后的整数:%d\n", result);
return 0;
} ```
转换后的整数:3
在这个例子中,3.75
被强制转换成了 3
,小数部分 .75
被丢弃了。
强制类型转换时,并不是四舍五入,而是简单地丢弃小数部分。这意味着 3.75
转换为 3
,-3.75
转换为 -3
,即使小数部分有较大的数值,也不会向最近的整数舍入。
```c
int main() { float num1 = 3.75; float num2 = -3.75;
int result1 = (int)num1; // 转换为整数
int result2 = (int)num2; // 转换为整数
printf("3.75 转换为整数:%d\n", result1);
printf("-3.75 转换为整数:%d\n", result2);
return 0;
} ```
3.75 转换为整数:3
-3.75 转换为整数:-3
floor
和 ceil
函数进行舍入如果希望在转换时执行不同的舍入操作,可以使用标准库中的 floor
和 ceil
函数。
floor
函数将浮点数向下取整,即舍弃小数部分,返回不大于原值的最大整数。ceil
函数将浮点数向上取整,即返回不小于原值的最小整数。这两个函数会返回一个 double
类型的值,因此需要将结果强制转换为 int
。
```c
int main() { float num1 = 3.75; float num2 = -3.75;
int floor_result1 = (int)floor(num1); // 向下取整
int ceil_result1 = (int)ceil(num1); // 向上取整
int floor_result2 = (int)floor(num2); // 向下取整
int ceil_result2 = (int)ceil(num2); // 向上取整
printf("3.75 向下取整:%d\n", floor_result1);
printf("3.75 向上取整:%d\n", ceil_result1);
printf("-3.75 向下取整:%d\n", floor_result2);
printf("-3.75 向上取整:%d\n", ceil_result2);
return 0;
} ```
3.75 向下取整:3
3.75 向上取整:4
-3.75 向下取整:-4
-3.75 向上取整:-3
round
函数进行四舍五入如果需要将浮点数进行四舍五入后转换为整数,可以使用 round
函数。round
函数会根据浮动数的值进行四舍五入。
```c
int main() { float num1 = 3.5; float num2 = -3.5;
int round_result1 = (int)round(num1); // 四舍五入
int round_result2 = (int)round(num2); // 四舍五入
printf("3.5 四舍五入:%d\n", round_result1);
printf("-3.5 四舍五入:%d\n", round_result2);
return 0;
} ```
3.5 四舍五入:4
-3.5 四舍五入:-4
floor
函数:向下取整。ceil
函数:向上取整。round
函数:四舍五入。根据不同的需求,可以选择适合的方法将 float
类型转换为 int
类型。需要注意的是,强制类型转换只会简单丢弃小数部分,可能会导致数据的精度损失。
```