如何将float转换为整数?

时间:2011-09-06 01:47:47

标签: php rounding floor

我有一个以mysql类型存储在mysql中的数字。从我读过的内容来看,我应该可以通过使用floor()来转换浮点数,但尝试这个或其他任何东西都不起作用。希望有人能发现我做错了什么?

示例..

数据库显示价格为25.00美元 - 在我的php页面中,我有以下代码(将价格行转换为$ price后):

$price2 = floor($price);
echo $price;
echo '<br>';
echo $price2;

我的结果是打印:

$25.00
0

我也试过用'round'代替'floor'。结果相同。

2 个答案:

答案 0 :(得分:6)

那是因为你使用$25.00作为输入而$让PHP认为你正在尝试对字符串进行舍入 - PHP会将(非数字)字符串舍入为0。

  • floor =向下舍入。
  • ceil =围捕。
  • round =他们在文法学校教你的同样的过程

但如果字符串中有$,那么这些都不会起作用。我建议您执行'$' . round( str_replace( '$', '', $price ) * 100 ) / 100之类的操作。 (乘法和除法使得它被四舍五入到最接近的便士(而不是美元),str_replace使它处理数字值,然后加上$。你真的很喜欢,然后按照下面的说法进行操作)

$dollar = '$' . round( str_replace( '$', '', $price ) * 100 ) / 100;
// the following makes sure that there are two places to the right of the decimal
$pieces = explode( '.', $dollar );
if( isset($pieces[1]) && strlen( $pieces[1] ) == 1 )
{
    $pieces[1].='0';
    $dollar = implode('.', $pieces);
}
// if you like, you can also make it so that if !pieces[1] add the pennies in

答案 1 :(得分:0)

正如cwallenpoole所说,你无法舍入非数字值。但是,你可以改为数字,例如

$price = '$25.25';
echo sprintf('$%0.2f', floor(preg_replace('/[^\d\.]/', null, $price)));