线上发现个bug,浮点数乘积以后取整,得到的数不符预期.还记得上次踩过的坑是数据库类型转换的一个问题.这个也相当于类型转换了..尴尬 浮点数计算的精度一定要谨慎. 例子如下: <?php $a = 18359.1; $b = $a * 100;// float(1835910) $c = intval($a * 100);// int(1835909) var_dump($b); var_dump($c); 究其原因,就是浮点数的二进制表示.当遇到循环的情况,就会出现这种问题.比如 18359.…
Math类中提供了5个与取整相关的函数,如下所示: static double ceil(double a):天花板函数,返回大于等于a的最小整数(但是以浮点数形式存储). static double floor(double a):地板函数,返回小于等于a的最大整数(但是以浮点数形式存储). static double rint(double a):四舍五入函数,返回与a的值最相近的整数(但是以浮点数形式存储). static long round(double a):四舍五入函数,返回与a的…
mysql数值处理函数floor与round    在mysql中,当处理数值时,会用到数值处理函数,如有一个float型数值2.13,你想只要整数2,那就需要下面的函数floor与round.   floor:函数只返回整数部分,小数部分舍弃.    round:函数四舍五入,大于0.5的部分进位,不到则舍弃.与floor不同.如下测试   mysql> select floor(5.1); +------------+ | floor(5.1) | +------------+ |    …
转自http://blog.sina.com.cn/s/blog_48ebd4fb010009c2.html   floor:朝负无穷方向舍入 B = floor(A) rounds the elements of A to the nearest integers less than or equal to A.   ceil:朝正无穷方向舍入  B = ceil(A) rounds the elements of A to the nearest integers greater than…
PHP数据如何向上取整? PHP数据向上取整可以通过ceil()函数来实现,ceil()函数表示向上舍入为最接近的整数. 语法是: 1 ceil(x) 参数 x 必需.一个数. 说明 返回不小于 x 的下一个整数,x 如果有小数部分则进一位.ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大. 示例: 向上取整,有小数就加1:ceil() 返回不小于 value 的下一个整数,value 如果有小数部分则进一位. 这个方法,在我们写分页类计算页数时…
原文:php浮点数计算比较及取整不准确解决方法 php有意思的现象,应该是很多编程语言都会有这样的现象.这个是因为计算机的本身对浮点数识别的问题..... $f = 0.58; var_dump(intval($f * 100 *100)); //结果5799 var_dump((float)($f * 100 *100)); //结果5800 echo (int)((0.1+0.7)*10);  //结果7 echo (float)((0.1+0.7)*10);  //结果8 <?php $a…
Objective-C拓展了C,自然很多用法是和C一致的.比如浮点数转化成整数,就有以下四种情况. 1.简单粗暴,直接转化 float f = 1.5; int a; a = (int)f; NSLog("a = %d",a); 输出结果是1.(int)是强制类型转化,丢弃浮点数的小数部分. 2.高斯函数,向下取整 float f = 1.6; int a; a = floor(f); NSLog("a = %d",a); 输出结果是1.floor()方法是向下取整…
如果我们使用" / "操作符进行除法运算时,如果遇到无法除尽的情况,会得到小数值.如果我只希望得到整数部分,怎么办呢? 1.round — 对浮点数进行四舍五入 float round ( float $val [, int $precision ] ) 返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果.precision 也可以是负数或零(默认值).//Example #1 round() 例子 <?php echo round(3…
1. 取整的三种方法 1.1 强转int类型 这种方法会直接对浮点数的小数部分进行截断(无论是正还是负). print(int(2.7)) # 2 print(int(-2.7)) # -2 1.2 采用math.ceil和math.floor 这种方法的取整规则如下图所示: 可以看到无论是正数还是负数,都遵循:ceil往数轴正方向取整,floor往数轴负方向取整.实例如下: print(math.ceil(-1.27)) # -1 print(math.floor(-1.27)) # -2 p…
向下取整 math.floor(num) 向上取整 math.ceil(num) 取整取余 math.modf(num) 测试 num = 12.4 print(math.floor(num)) 12 print(math.ceil(num)) 13 integer, decimal = math.modf(num) print(integer) 12 print(decimal) 0.4…