精华内容
下载资源
问答
  • 废话少叙,直接上code: 首先,不得不提醒大家一个容易被忽视或者搞混的问题——一般的,0.5这种末尾是5的小数...向上取整:math.ceil() import math math.ceil(-0.5) >>> 0 math.ceil(-...

    废话少叙,直接上code:

    首先,不得不提醒大家一个容易被忽视或者搞混的问题——一般的,0.5这种末尾是5的小数,四舍五入取整应进位。这个进位的意思是:-0.5 → -1;0.5 → 1.即正负情况不同,都向着远离0,使得绝对值更大的方向进位

    • 向上取整:math.ceil()
      import math
      
      math.ceil(-0.5)
      >>> 0
      
      math.ceil(-0.9)
      >>> 0
      
      math.ceil(0.3)
      >>> 1

      如code所见,math.ceil()严格遵循向上取整,所有小数都是向着数值更大的方向取整,不论正负数都如此

    • 四舍五入:round()

      round(-2.5)
      >>> -2
      
      round(-1.5)
      >>> -2
      
      round(-0.5)
      >>> 0
      
      round(0.5)
      >>> 0
      
      round(1.5)
      >>> 2
      
      round(2.5)
      >>> 2

       如code所示,round()当不传入第二个参数时默认取整,具体就是按照四舍五入来。但值得一提的是这里对小数末尾为5的处理方法:当末尾的5的前一位为奇数:向绝对值更大的方向取整(比如-1.5、1.5处理结果);当末尾的5的前一位为偶数:去尾取整(比如-2.5,-0.5,0.5和2.5的处理结果)。

    • 向下取整:math.floor()

      math.floor(-0.3)
      >>> -1
      
      math.floor(0.9)
      >>> 0

      简单且忠实地向下取整,不再讨论

    • 两个有趣且特殊的Python取整:int()、整除"//"

      • int()

        int(-0.5)
        >>> 0
        
        int(-0.9)
        >>> 0
        
        int(0.5)
        >>> 0
        
        int(0.9)
        >>> 0

        一句话总结:int()函数是“向0取整”,取整方向总是让结果比小数的绝对值更小

      • "//"

        (-1) // 2  # -0.5
        >>> -1
        
        (-3) // 2  # -1.5
        >>> -2
        
        1 // 2    # 0.5 
        >>> 0
        
        3 // 2    # 1.5
        >>> 1

        一句话总结:“整除”符号运算将结果忠实地向下取整,与math.floor()处理结果一样

     

    总结一下:

    1. 向上取整:math.ceil()
    2. 向下取整:math.floor()、整除"//"
    3. 四舍五入:round()——奇数向远离0取整,偶数去尾取整;或言之:奇数进位,偶数去尾
    4. 向0取整:int()

    由于最近在做算法题,许多算法题都要涉及(0-1)/2这类的边界计算,这时候我们想让这个-0.5取整至0,而且想让(4-1)/2的结果1.5取整至1,即正数时向下取整,负数时向上取整,总而言之就是向0取整,这时候我们可以用int()

    展开全文
  • 除法之后向上取整和向下取整 1、向上取整 两数相除(a/b)向上取整:(a+b-1)/b,理解为a如果能将b整除则不+1,若不能整除,则+1。 例:9/2=4 向上取整:(9+2-1)/2=5; 也可以使用c++中的ceil()函数:ceil(9/2)=5 2....

    除法之后向上取整和向下取整

    1、向上取整

    两数相除(a/b)向上取整:(a+b-1)/b,理解为a如果能将b整除则不+1,若不能整除,则+1。
    例:9/2=4
    向上取整:(9+2-1)/2=5;
    也可以使用c++中的ceil()函数:ceil(9/2)=5

    2.向下取整

    两数相除(a/b)向下取整:a/b;也可以用c++函数floor(),floor(a/b).

    3.四舍五入

    两数相除(a/b)四舍五入:(a+b/2)/b;也可以用c++函数round(),round(a/b).

    展开全文
  • 此时应该是向下取整,也就是Math.floor(speed)。同理,当从400变为200时,speed的值一直是负的,比如,到最后变为-0.5不在变化,那么此时应该用向上取整使speed的值变为0啊。所以,这句speed = speed>0?Math.ceil...
    无标题文档

    *{margin:0;padding:0;}

    ul li{

    list-style:none;

    width:200px;

    height:100px;

    background:yellow;

    margin-bottom:20px;

    }

    window.οnlοad=function(){

    var ali = document.getElementsByTagName("li");

    for(i=0;i

    ali[i].timer = null;

    ali[i].οnmοuseοver=function(){

    startMove(this,400);

    }

    ali[i].οnmοuseοut=function(){

    startMove(this,200);

    }

    }

    }

    function startMove(obj,itarget){

    clearInterval(obj.timer);

    var speed;

    obj.timer=setInterval(function(){

    speed = (itarget-obj.offsetWidth)/8;

    speed = speed>0?Math.ceil(speed):Math.floor(speed);

    if(obj.offsetWidth == itarget){

    clearInterval(obj.timer);

    }

    else{

    obj.style.width = obj.offsetWidth+speed+"px";

    }

    },30);

    }

    这两行:

    speed = (itarget-obj.offsetWidth)/8;

    speed = speed>0?Math.ceil(speed):Math.floor(speed);

    当物体宽度为200,目标为400时,speed的值应该是从200/8一直变到0。比如,由于像素问题,变道0.5就不在变化了,那么就要把0.5变为0.此时应该是向下取整,也就是Math.floor(speed)。同理,当从400变为200时,speed的值一直是负的,比如,到最后变为-0.5不在变化,那么此时应该用向上取整使speed的值变为0啊。所以,这句speed = speed>0?Math.ceil(speed):Math.floor(speed);为什么不是speed = speed>0?Math.floor(speed):Math.ceil(speed);

    展开全文
  • 关于向上取整和向下取整知识整理 向下取整函数f(x)=⌊x⌋f(x)=\lfloor x\rfloorf(x)=⌊x⌋ 是单调递增的 ,向上取整函数f(x)=⌈x⌉f(x)=\lceil x\rceilf(x)=⌈x⌉也是单调递增的。 对任意整数n, ⌈n2⌉+⌊n2⌋=n\...

    关于向上取整和向下取整知识整理

    向下取整函数 f ( x ) = ⌊ x ⌋ f(x)=\lfloor x\rfloor f(x)=x 是单调递增的 ,向上取整函数 f ( x ) = ⌈ x ⌉ f(x)=\lceil x\rceil f(x)=x也是单调递增的。

    对任意整数n,

    ⌈ n 2 ⌉ + ⌊ n 2 ⌋ = n \lceil \frac{n}{2}\rceil+\lfloor \frac{n}{2}\rfloor=n 2n+2n=n

    ⌈ n b ⌉ = ⌊ n + b − 1 b ⌋ ​ \lceil \frac{n}{b}\rceil=\lfloor \frac{n+b-1}{b}\rfloor​ bn=bn+b1

    对任意 实数 x ≥ 0 x\ge0 x0整数 a , b > 0 a,b>0 a,b>0

    ⌈ ⌈ x / a ⌉ b ⌉ = ⌈ x a b ⌉ ​ \lceil \frac{\lceil x/a\rceil}{b}\rceil=\lceil \frac{x}{ab} \rceil​ bx/a=abx

    ⌈ ⌈ x / a ⌉ b ⌉ = ⌈ x a b ⌉ ​ \lceil \frac{\lceil x/a\rceil}{b}\rceil=\lceil \frac{x}{ab} \rceil​ bx/a=abx

    ⌈ a b ⌉ ≤ a + b − 1 b \lceil \frac{a}{b} \rceil\le \frac{a+b-1}{b} baba+b1

    以上参考《算法导论》第三版

    f n ( x ) = ⌈ n x ⌉ , x ∈ [ 1 , n ] f_n(x)=\lceil \frac{n}{x}\rceil,x\in[1,n] fn(x)=xn,x[1,n],那么 f n ( x ) f_n(x) fn(x)的结果有 O ( n ) O(\sqrt n) O(n )种,取法如下:

    1. i = n i=n i=n
    2. l a s t = ⌈ n ⌈ n / i ⌉ ⌉ ​ last=\lceil\frac{n}{\lceil n/i \rceil}\rceil​ last=n/in ,那么 ⌈ n i ⌉ ​ \lceil\frac{n}{i}\rceil​ in 是一个解,且该解对应的最小整数 l a s t ​ last​ last满足 f ( l a s t ) = ⌈ n i ⌉ ​ f(last)=\lceil\frac{n}{i}\rceil​ f(last)=in
    3. i = l a s t − 1 ​ i=last-1​ i=last1,如果 i > 0 ​ i>0​ i>0返回第二步

    代码表示

    int cdiv(int a,int b)// a/b的向上取整
    {
        return (a+b-1)/b;
    }
    void work(int n)
    {
        int tol=0;
        for(int i=n,last;i>0;i=last-1,tol++)
        {
            cout<<"f(x):"<<cdiv(n,i)<<endl;//print the solutions
            last=cdiv(n,cdiv(n,i));
        }
        cout<<"The number of solutions :"<<tol<<endl;
    }
    int main()
    {
        int n;
        cin>>n;
        work(n);
    }
    

    f n ( x ) = ⌊ n x ⌋ , x ∈ [ 1 , n ] f_n(x)=\lfloor \frac{n}{x}\rfloor,x\in[1,n] fn(x)=xn,x[1,n],那么 f n ( x ) f_n(x) fn(x)的结果有 O ( n ) O(\sqrt n) O(n )种,取法如下:

    1. i = 1 i=1 i=1
    2. l a s t = ⌊ n ⌊ n / i ⌋ ⌋ last=\lfloor\frac{n}{\lfloor n/i \rfloor}\rfloor last=n/in,那么 ⌊ n i ⌋ \lfloor\frac{n}{i}\rfloor in 是一个解,且该解对应的最大整数 l a s t last last满足 f ( l a s t ) = ⌊ n i ⌋ f(last)=\lfloor\frac{n}{i}\rfloor f(last)=in
    3. i = l a s t + 1 i=last+1 i=last+1,如果 i < = n i<=n i<=n,则返回第二步

    代码表示

    int fdiv(int a,int b)
    {
        return a/b;
    }
    void work(int n)
    {
        int tol=0;
        for(int i=1,last;i<=n;i=last+1,tol++)
        {
            cout<<"f(x):"<<fdiv(n,i)<<endl;//print the solutions
            last=fdiv(n,fdiv(n,i));
        }
        cout<<"The number of solutions :"<<tol<<endl;
    }
    int main()
    {
        int n;
        cin>>n;
        work(n);
    }
    
    展开全文
  • PHP 对金额的向上取整向下取整

    千次阅读 2019-03-13 18:33:56
    在PHP中,一般来说如果需要向上取整向下取整。用 ceil()、floor() 函数就可以。但是如果对金额的向上、向下取整要怎么处理那(金额一般都是要保留两位小数的)。 向上取整 /** * 默认保留2位(金额向上取整算法) ...
  • C语言有以下几种取整方法: 1、直接赋值... 2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),但是整数除法对负数的取整结果使用的C编译器有关。3、使用floor函数。floor(x)返回的是小于或等于x的最...
  • 一面:70分钟 突击电话面试 正思考着项目功能模块,阿里面试官打来了电话,开始了阿里一面。 阿里面试官自我介绍,介绍了5分钟左右,部门的情况,主要的业务 提问开始 ...mybatishibernate的区别 C,C
  • 向上取整向下取整

    2013-10-31 09:58:00
    向上取整 不管四舍五入的规则 只要后面有小数前面的整数就加1向下取整 不管四舍五入的规则 只要后面有小数忽略小数 给定 4.9调用用向下取整函数 得到的是 4调用用向上取整函数 得到的是 5 Word->插入->符号...
  • 向上取整符号:⌈x⌉⌈x⌉⌈x⌉,与向下取整符号相对,表示大于等于 xxx 的最小的整数。 向上取整 先放结论:左边式子表示aaa对b+1b+1b+1向上取整,右边是取整的算法 ceil(ab+1)ceil(\cfrac {a} {b+1})ceil(b+1a​)...
  • 所谓向上取整就是指大于等于x的最小整数,向下取整是指小于等于x的最大整数 此算法在二叉查找树中查找大于等于x的最小整数/小于等于x的最大整数   算法主要分为几种情况讨论(以向上取整为例): 1.当前节点的...
  • 一般都是向上取整,例如counts=205 pageCouts=20 ,pages= 11 页。一般的除法只是取整数部分,达不到要求。二、方法:1、通用除法:UP(A/B) = int((A+B-1)/B)取临界值,计算A+B-1的范围就OK.2 、Python除法:首先...
  • 向下取整向上取整

    2019-08-09 21:55:02
    我们平时用5/2=2是向下取整,而负数的话是-7/2=-3,是向上取整 在一些题目他会要求向上取整还是向下取整 可以用这个函数 函数原型 double floor(doube x);//都是double类型!!! 头文件 #include<math.h> ...
  • 文章目录一、向下取整向上取整1.符号2.下标对半分 (p+q)/2(1)结论(2)例子 一、向下取整向上取整 1.符号 向上取整, 运算称为 Ceiling,用数学符号⌈ ⌉ (上有起止,开口向下)表示。 等于大于自己的最小...
  • 一、向上取整 由于a >1, b>1且a、b均为整数,故可以设 a = nb + m(其中,n为非负整数, 0<=m<=b-1) 则, a/b = n + m/b (a + b - 1)/b = (nb + m + b - 1)/b = n + 1 + (m - 1)/b 故int ((a + b - 1...
  • 向上取整向下取整,四舍五入

    千次阅读 2018-07-15 20:25:59
    6. 图像模糊处理 点击打开链接描述给定n行m列的图像各像素点的灰度值...输入第一行包含两个整数nm,表示图像包含像素点的行数列数。1 &lt;= n &lt;= 100,1 &lt;= m &lt;= 100。接下来n行,每...
  • 向上取整向下取整 /////////argmax

    千次阅读 2013-11-12 11:28:43
    向下取整的运算称为Floor,用数学符号⌊⌋表示,与之相对的,向上取整的运算称为Ceiling,用数学符号⌈⌉表示。 C语言定义的取整运算既不是Floor也不是Ceiling,无论操作数是正是负总是把小数部分截断(Truncate)...
  • 这种方法采用的是舍去小数部分2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),但是整数除法对负数的取整结果使用的C编译器有关。3、使用floor函数。floor(x)返回的是小于或等于x的最大整数。如:...
  • Python 向上取整算法

    2019-10-08 21:30:15
    一般都是向上取整,例如counts=205 pageCouts=20 ,pages= 11 页。 一般的除法只是取整数部分,达不到要求。 二、方法: 1、通用除法:  UP(A/B) = int((A+B-1)/B)  取临界值,计算A+B-1的范围就OK. 2 、...
  • 通用向上取整算法

    千次阅读 2010-08-21 18:38:00
    求┌A/B┐即A/B的上取整。 当A/B整除,往上取整返回值为A/B。 当不整除,返回值是int(A/B)+1 2.算法 (A+B-1)/B   3.算法证明 由于A>1、B>1,且A、B都是整数,所以可以设A=NB+M 其中N为...
  • 向上向下取整

    2020-08-19 15:26:58
    //是向下取整,得到比自己的小的最大整数 5/4 = 1.25 比1.25小的最大整数为1 如果要向上取整呢? 第一反应肯定就是,向下取整后+1呗! 如下 但是,如果a/b 中a/b得到的结果本身就为整数,那么岂不是多+1了? 因此a/...
  • #include <iostream> #include<stdio.h> #include<algorithm> #include<string.h> #include<math.h> using namespace std; #define ENTER printf("\n");... while (scanf("%lf%lf%lf",
  • 整数 向上取整算法:(x+n-1)/n

    千次阅读 2013-09-30 11:29:59
    Floor表示向下取整 Ceiling表示向上取整 /* 1、假设变量xn是两个正整数,我们知道x/n这个表达式的结果要取Floor,  * 例如x是17,n是4,则结果是4。如果希望结果取Ceiling应该怎么写表达式呢?  * 例如x是...
  • java.lang.Integer中转进制字符串的静态方法中Math.max(((mag + (shift - 1)) / shift), 1),用于描述二进制转X进制的时候的字符长度。...在java里面,m / s运算结果是向下取整得,就是抹掉黄色部分凑整.
  • 向上/向下取整和四舍五入编程实现

    千次阅读 2016-07-16 20:01:32
    在看Guava Cache的实现源码时,其中有个向上取整操作,它的源码如下:int segmentCapacity = initialCapacity / segmentCount;...} 关于向上取整向下取整、四舍五入等操作,有不同的实现,效

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,336
精华内容 4,134
关键字:

向上取整和向下取整算法