zwy12138 发表于 2015-7-27 11:44:28

是否强制类型转换不是四舍五入?

#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
为什么?

jmuxiaolu 发表于 2015-7-27 11:44:29

float类型的能表示的数的精度为8位,即最多可以表示8位小数。而int是整形,是不能表示小数的。在进行强制类型装换时,float类型尾部的小数应该会被抹掉。所以是5。装换的时候并不是按四舍五入的原则的!

weisuo 发表于 2015-7-27 12:04:49

weisuo 发表于 2015-7-27 12:05:22

顶啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

weisuo 发表于 2015-7-27 12:05:54

啊啊啊啊啊啊啊啊啊啊啊啊啊啊顶

weisuo 发表于 2015-7-27 12:07:16

0000000000000

哥斯拉不说话 发表于 2015-7-27 12:28:51

不四舍五入

ryxcaixia 发表于 2015-7-27 13:28:20

只取整数部分
小数点后的自动忽略

迪拜~战阳 发表于 2015-7-27 22:22:50

是向0取整,而不是四舍五入

xiongjingkui 发表于 2015-7-27 22:33:52

强制类型转换是切掉小数点后面的,不是四舍五入。。

黑龍 发表于 2015-7-28 19:00:46

你想多了 这个是直接删掉不是四舍五入

阔怀 发表于 2015-8-5 11:37:11

Int类型不是四舍五入,而是直接截取整数部分,所以会是5

小伪 发表于 2015-8-5 15:32:11

我觉的你的问题是,你听谁说的是四舍五入。。。。只保留整数部分。

小小甲鱼哈哈 发表于 2015-8-6 20:14:53

int是整型变量,只取前面整数部分。

Gavin_Zhang 发表于 2015-8-8 21:22:40

不是四舍五入吧,直接截断了吧,只留下整数部分了

智商是硬伤 发表于 2015-8-9 09:07:39

只取整数部分
页: [1]
查看完整版本: 是否强制类型转换不是四舍五入?