是否强制类型转换不是四舍五入?
#include <stdio.h>void main()
{
float f=5.75;
printf("(int)f=%d,f=%f\n",(int)f,f);
}
不是说四舍五入吗?应该输出的是(int)f=6,f=5.750000啊,第一个应该是6啊
但实际输出的是(int)f=5
为什么? float类型的能表示的数的精度为8位,即最多可以表示8位小数。而int是整形,是不能表示小数的。在进行强制类型装换时,float类型尾部的小数应该会被抹掉。所以是5。装换的时候并不是按四舍五入的原则的!
顶 顶啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 啊啊啊啊啊啊啊啊啊啊啊啊啊啊顶 0000000000000 不四舍五入 只取整数部分
小数点后的自动忽略 是向0取整,而不是四舍五入 强制类型转换是切掉小数点后面的,不是四舍五入。。 你想多了 这个是直接删掉不是四舍五入 Int类型不是四舍五入,而是直接截取整数部分,所以会是5 我觉的你的问题是,你听谁说的是四舍五入。。。。只保留整数部分。 int是整型变量,只取前面整数部分。 不是四舍五入吧,直接截断了吧,只留下整数部分了 只取整数部分
页:
[1]