c语言double转成int

发现用fscanf取值,例如fscanf(fp,"%8.2lf",&Pollat);取不到所要的值,是一串很乱的数,而把lf前的8.2去掉,可以取值,但是也会出错,如文件中的450.00会取到450.000000000007,最后一位反而不对

第1个回答  2013-07-18
舍弃小数,向下取整数用floor,参照:

http://baike.baidu.com/view/656660.htm

向上取整数用ceil,参照:
http://baike.baidu.com/view/653967.htm

四舍五入floor( 值 + 0.5 )
第2个回答  2013-07-18
额,不知道你们老师给你们讲没有,在计算机中所有的浮点数都不是精确的,他们都是一些约等的值,我记得在c语言中,单精度是精确到小数点后六位,双精度是精确到小数点后十位。你似乎就在纠结最后一位不精确啊本回答被提问者采纳
第3个回答  2013-07-18
计算机在保存浮点型的数的时候,保存的就是一个近似的值,一般不对这样的小数进行取整操作,之前我也遇到过这样的问题
相似回答