首页 > 编程知识 正文

python四舍五入保留整数,c语言除法四舍五入取整

时间:2023-05-03 10:47:40 阅读:62991 作者:4252

Java math类提供了许多与数学计算相关的方法,其中包括舍入,对于舍入,提供了向下舍入的floor(double d的返回值double、rint (double d drint )

但是,其中接近四舍五入的方法只有rint和round方法,如果单独使用这两种方法,会得到与预期不同的结果。

例如round(-1.5 )会得到-1而不是我们期望的-2的结果。

另一方面,rint(1.5 )得到-2.0的结果,而rint(1.5 )得到2.0的结果,与预想的3.0不同

让我们来分析一下为什么会变成这样。 首先,让我们看看round方法的API :

returnstheresultofroundingtheargumenttoaninteger.theresultisequivalentto (long ) math.floor ) d0.5 )。

特殊情况:

round(0.0 )=0.0round(-0.0 )=0.0 round (anythinglong.max_value round ) (anything long.max _ value ) ) )。=long.max_valueround(-infinity )=long.min _ value round (nan ) )。=0.0 parametersdthevaluetoberounded.returnstheclosestintegertotheargument .返回接近参数的整数,结果为(long ) math.floor ) d0.5 由于结果为d下降,因此如果为round )-1.5 ),则返回值为0.5并下降,即-1.5.5=-1.0、1.0下降或1.0,因此返回值为长整数1,但计算例如为round(1.5)

接下来,我们来看一下rint方法的API,它离四舍五入有点远。

publicstaticdoublerint (双) Added in API level 1

returnsthedoubleconversionoftheresultofroundingtheargumenttoaninteger.tiebreaksareroundedtowardseven。

特殊情况:

rint(0.0 )=0.0rint(-0.0rint ) infinity )=infinity(-infinityrint )=-infinity rint (nan ) ) Nanparametent ) )

此方法也返回接近参数的整数,如果有两个整数,则返回偶数。

也就是说,几点五分相遇时,才遇到两个整数,所以对rint(-1.5 )来说,-1.0和-2.0两个整数接近-1.5,而他取偶数-2.0。 对于rint(-1.3 ),-1.0只有一个接近-1.3的整数,因此此时没有误差。 但是,对于rint(2.5 ),2.0和3.0接近2.5,他返回与我们期望不同的偶数2.0,而rint )-2.5 )返回-2.0,所以对于rint方法,遇到偶数5时,结果不同

综合上述,如果想用round方法就得解决负数问题,所以可以用绝对值Math.abs方法来解决。下面为代码:

方法一:

publicdoublerun (双编号) doublea=math.signum ) num; //判断正数还是负数、0,负数为-1.0,正数为1.0if(a0.0 ) return 0.0-math.round (math.ABS ) num ) ); 返回math.round (num; }

如果想用rint方法就得解决偶数点五的问题,下面为代码:

方法二:

publicdoublerun (双编号) if ) math.floor (math.ABS ) num ) %2!=0)返回math.rint (num ); if(five(num ) if ) math.signum ) num ) 0.0 ) returnmath.rint(num )-1.0; ELSEif(math.signum ) 0.0 ) return math.rint (num ) 1.0; 返回math.rint (num; } publicbooleanfive (双精度) string[]split=string.valueof ).split ). ); if(split[1].startswith('5' ) )返回真; else返回假; }当然,还有其他方法,如用保留小数的方法格式化字符串

方法2效率不高,建议方法1。

我是第一次写博客,还是学生,有不足的地方请指出来。 请谅解不足或错误的地方。 谢谢你。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。