我已经在几个地方看到过它,其中(int)someValue
是不准确的,而是调用round()
函数的问题。 两者有什么区别?
具体来说,如果需要,对于C99 C.我在java中编写时也看到了同样的问题。
在将float
/ double
值转换为int
情况下,由于整数截断 ,通常会松散小数部分。
这与我们通常预期的舍入完全不同,因此例如2.8最终为2,整数截断,就像2.1最终为2。
更新 :
导致潜在(粗略)不准确的另一个原因是由于有限的值范围能够用整数表示而不是浮点类型(感谢@R在下面的评论中提醒我们这一点)
7.12.9.6圆函数
概要
#include
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 )中进行更改。
(对于那些感兴趣的人, 这里有一个关于舍入算法的明确介绍。)
特别是对于C,在大多数情况下(可能)是正确的,但是,你应该总是测试结果。
转换的问题是,它可以截断OR轮。 它的作用很大程度上取决于编程语言,略微取决于所使用的特定编译器。 这意味着对于始终适用的结果没有一般规则。
Round()通常用于生成类似于数学舍入的结果。 有一个边缘情况需要针对.5进行专门监控,有时会轮到下一个偶数。
需要了解更多c/c++开发分享将变量转换为int vs round()函数,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是c/c++开发分享将变量转换为int vs round()函数相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/979124.html