$n = “19.99”;
echo (int) ($n * 100);
echo (int) strval($n * 100);
上面这段代码的输出是
1998
1999
浮点没有任意精度。19.99 * 100的结果,实际上表示为1998.9999999999。
而(int)、intval、floor用在1998.9999999999时,就是输出1998,所以如果需要浮点的高精度运算,可以用round四舍五入,或者借助php的高精度函数来解决,floor(bcmul(0.58,10))为58,,此外还有bccomp、bcadd、bcsub、bcmod、bcp、bcmul,分别代表比较、加、减、取模、除、乘法运算。
###
ceil — 进一法取整
floor — 舍去法取整
round — 对浮点数进行四舍五入
intval—对变数转成整数型态
### php 高精度计算函数
PHP 为任意精度数学计算提供了二进制计算器(Binary Calculator),它支持任意大小和精度的数字,以字符串形式描述
bcadd — 加法
bccomp — 比较
bcdiv — 相除
bcmod — 求余数
bcmul — 乘法
bcpow — 次方
bcpowmod — 先次方然后求余数
bcscale — 给所有函数设置小数位精度
bcsqrt — 求平方根
bcsub — 减法