Это потому, что вы используете $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