在 PHP 和其他一些语言都会存在这个问题,转换浮点数为整数的时候会出现精度丢失,如下:
<?php $n="19.99"; print intval($n*100); // prints 1998
1
2
3
|
<?php
$n
=
"19.99"
;
print
intval
(
$n
*
100
)
;
// prints 1998
|
解决办法:
1.转换成字符串再 intval
print intval(strval($n*100)); // prints 1999
1
|
print
intval
(
strval
(
$n
*
100
)
)
;
// prints 1999
|
2.使用 round 函数替代 floatval
php -r "echo round(19.99*100);"
1
|
php
-
r
"echo round(19.99*100);"
|
3.先转换成字符串再取整
print intval(strval($n*100)); // prints 1999
1
|
print
intval
(
strval
(
$n
*
100
)
)
;
// prints 1999
|