整数除法操作的取整问题

整数除法舍入方式:

整数相除涉及到舍入的问题,有这么四种舍入方式:向偶数舍入,向零舍入,向下舍入,向上舍入。

向偶数舍入:(也叫作最接近的值舍入) 值应该舍入到距离自己最近的数字。当值处于中间的时候,应该让最低有效位保持偶数。所以,按照这种策略,1.4应该舍入到1,1.6应该舍入到2,只有在x.5的时候要考虑个位数保持偶数,比如1.5应该舍入到2, 2.5也应该舍入到2,因为2是偶数。

向零舍入: 很好理解,向靠近零的整数舍入。

向下舍入:也就是我们常说的向下取整 $lfloor x floor $

向上舍入:也就是向上取整  $lceil x ceil$

Java及c语言中的除法:

Java以及c语言当中的整数除法采用的是向0舍入的方式:

public class div {
    public static void main(String[] args){
        int a = 3/2;  //float除法应该为 1.5
        int b = 5/3;  //float除法应该为 1.666
        int c = 5 /4;  //~~~~~~~~~~~~  1.25

        int d = -3/2; //~~~~~~~~~~~~  -1.5
        int e = -5/3; //~~~~~~~~~~~~~~  -1.66
        int f = -5/4; //~~~~~~~~~~~~~~  -1.25

        System.out.printf("a is %d
b is %d
c is %d
" +
                          "d is %d
e is %d
f is %d
",
                           a, b,c,d,e,f);
    }
}

输出结果为:

a is 1
b is 1
c is 1
d is -1
e is -1
f is -1

Python中的除法:

Python当中 '/'表示float除法, '//'是整数除法,遵循的原则是向下取整

a = 3//2  # 1.5
b = 5//3  # 1.66
c = 5//4  #1.25

d = -3//2 # -1.5
e = -5//3 # -1.66
f = -5//4 # -1.25
print(a,b,c)
print(d,e,f)

结果为:

1 1 1
-2 -2 -2

'//'这种运算 可以使用 int(a//b)来转化为向0取整。

原文地址:https://www.cnblogs.com/jiaxin359/p/9232929.html