0

函数不适用于带有 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)) ;
}

功能取自:货币兑换无效

上面的错误在下面得到纠正

  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)) ;
    }
4

2 回答 2

1
setlocale(LC_MONETARY, 'en_US');
echo '$' . money_format('%i', $number/100) . "\n";
于 2013-02-18T09:46:37.300 回答
1

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

那么为什么不这样做:

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

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

于 2013-02-18T07:52:16.517 回答