转换ToMoney功能不起作用

时间:2013-02-18 07:44:07

标签: php currency

功能不适用于8 [任何数字]的前缀。

输入:970输出:9.70美元 输入:870输出:870美元 输入:800输出:800美元

function toMoney( $val, $symbol = '$', $r = 2 ) {
    $n = $val; 
    $c = is_float($n) ? 1 : number_format( $n , $r );
    $d = '.';
    $t = ',';
    $sign = ( $n < 0 ) ? '-' : '';
    $i = $n = number_format( abs( $n ), $r ); 
    $j = ( ( $j = $i.length ) > 3 ) ? $j % 3 : 0; 

   return  $symbol.$sign .( $j ? substr( $i, 0, $j) + $t : '').preg_replace('/(\d{3})(?=\d)/',"$1" + $t,substr($i,$j)) ;
}

功能取自:Money conversion not worked

以上错误在以下

中得到纠正
  function toMoney( $val, $symbol = '$', $r = 2 ) {
        $n = $val; 
        $c = is_float($n) ? 1 : number_format( $n , $r );
        $d = '.';
        $t = ',';
        $sign = ( $n < 0 ) ? '-' : '';
        $i = $n = number_format( abs( $n ), $r ); 
        $j = ( ( $j = strlen($i) ) > 3 ) ? $j % 3 : 0; 

       return  $symbol.$sign .( $j ? substr( $i, 0, $j) + $t : '').preg_replace('/(\d{3})(?=\d)/',"$1" + $t,substr($i,$j)) ;
    }

2 个答案:

答案 0 :(得分:1)

如果我理解得很好,你想要最后两个数字是美分吗?

所以为什么不这样做:

$val = number_format(intval(substr($val,0,strlen($val)-2)),).'.'.substr($val,-2);

第一个substr将忘记最后两位数字,然后只用千位分隔符格式化。 第二个substr只取最后两个数字。

答案 1 :(得分:1)

setlocale(LC_MONETARY, 'en_US');
echo '$' . money_format('%i', $number/100) . "\n";