我已经在几个(int)someValue不准确的地方看到它,而是问题需要这个round()功能.两者有什么区别?
具体来说,如果需要,对于C99 C.我在java中编写它时,我的程序中也遇到了同样的问题.
Lev*_*von 22
如果将float/ double值转换为int,则通常会因整数截断而松散小数部分.
这与我们通常预期的舍入完全不同,因此例如2.8最终为2,整数截断,就像2.1最终为2.
更新:
导致潜在(粗略)不准确的另一个原因是由于有限的值范围能够用整数表示而不是浮点类型(感谢@R在下面的评论中提醒我们这一点)
kol*_*kol 10
int截断浮点数,也就是说,它会丢弃小数部分. round函数返回最接近的整数.例如,round(-1.5)is -2和round(1.5)is ,中途案例从零开始舍入2. 7.12.9.6圆函数
概要
Run Code Online (Sandbox Code Playgroud)#include <math.h> double round(double x); float roundf(float x); long double roundl(long double x);描述
这些
round函数将它们的参数四舍五入为浮点格式的最接近的整数值,无论当前的舍入方向如何,都将中间的情况四舍五入.返回
该
round函数返回圆整数值.
资料来源:C99标准(ISO/IEC 9899:1999).本节在C11标准(ISO/IEC 9899:2011)中没有变化.
(对于那些感兴趣的人,这里有一个关于舍入算法的明确介绍.)