向上/向下取整和四舍五入编程实现

在看Guava Cache的实现源码时,其中有个向上取整操作,它的源码如下:

int segmentCapacity = initialCapacity / segmentCount;
if (segmentCapacity * segmentCount < initialCapacity) {
  ++segmentCapacity;
}

关于向上取整、向下取整、四舍五入等操作,有不同的实现,效率上讲,也是基本可以忽略不计,毕竟用的比较少,这里对向上/向下取整和四舍五入的编程实现进行一下整理。

对于运算>>>>>>

向下取整:

a/b

向上取整:

(a+b-1)/b

四舍五入:

int(float(a)/b+0.5)

对于定值>>>>>>

可以使用编程语言内置的floor和ceil函数。floor(x)返回的是小于或等于x的最大整数。ceil(x)返回的是大于x的最小整数。

下面是一种简单实现,不带错误检查等

int floor(double x)
{
    return (int) x - (x< 0);
}

int ceil(double x)
{
    return (int) x + (x> 0);
}

int round(double x)
{
    return floor(x+0.5);
}
时间: 2024-10-23 01:15:58

向上/向下取整和四舍五入编程实现的相关文章

Python 之 向上取整、向下取整以及四舍五入

python 向上取整ceil 向下取整floor 四舍五入round,相面给出源码示例. import math #向上取整 print "math.ceil---" print "math.ceil(2.3) => ", math.ceil(2.3) print "math.ceil(2.6) => ", math.ceil(2.6) #向下取整 print "\nmath.floor---" print &q

js 向上取整、向下取整、四舍五入

js 向上取整.向下取整.四舍五入 CreateTime--2018年4月14日11:31:21 Author:Marydon // 1.只保留整数部分(丢弃小数部分) parseInt(5.1234);// 5 // 2.向下取整(<= 该数值的最大整数)和parseInt()一样 Math.floor(5.1234);// 5 // 3.向上取整(有小数,整数就+1) Math.ceil(5.1234); // 4.四舍五入(小数部分) Math.round(5.1234);// 5 Mat

向上向下取整、舍入

向下取整 floor (地板) import math math.floor(-2.2) # -3.0 math.floor(2.2) # 2.0 向上取整 ceil (天花板) import math  math.ceil(-2.2) # -2.0 math.ceil(2.2) # 3.0 舍入 round round(2.24, 1) # 2.2 round(2.26, 1) # 2.3 向上向下取整.舍入,布布扣,bubuko.com

SQL 向上取整、向下取整、四舍五入取整的实例!round、rounddown、roundup

sql server ==================================================== [四舍五入取整截取] select round(54.56,0) ==================================================== [向下取整截取] SELECT FLOOR(54.56) ==================================================== [向上取整截取] SELECT CE

python 向上取整ceil 向下取整floor 四舍五入round

#encoding:utf-8import math #向上取整print "math.ceil---"print "math.ceil(2.3) => ", math.ceil(2.3)print "math.ceil(2.6) => ", math.ceil(2.6) #向下取整print "\nmath.floor---"print "math.floor(2.3) => ", ma

Sql Server 里的向上取整、向下取整、四舍五入取整

==================================================== [四舍五入取整截取] select round(54.56,0) ==================================================== [向下取整截取] SELECT FLOOR(54.56) ==================================================== [向上取整截取] SELECT   CEILING(13.

Sql Server 里的向上取整、向下取整、四舍五入取整的实例!

http://blog.csdn.net/dxnn520/article/details/8454132 ==================================================== [四舍五入取整截取] select round(54.56,0) ==================================================== [向下取整截取] SELECT FLOOR(54.56) =============================

向上取整_向下取整_四舍五入

ceil(n / m) == (n + m - 1) / m; //向上取整 floor(m) //向下取整 实现: 向下取整:a / b 向上取整:(a + (b - 1)) / b 四舍五入:int(a×1.0 / b + 0.5) 之所以在向上取整时,分子部分要减去1,是为了避免出现,a 能被 b 整除的情况. 12 / 3 == 4, (12 + 3)/ 3 == 5,而对 4 向上取整应该仍为 4,即(12 + 2)/ 3 == 4.

java 向上、向下取整,四舍五入

public class MathTest { public static void main(String[] args) { // 四舍五入 long round = Math.round(1.499); long round2 = Math.round(1.5); System.out.println(round); System.out.println(round2); // 向上取整 int s = (int)Math.ceil(1.1); System.out.println(s);