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

私がよく理解しているなら、最後の2つの数字をセントにしたいですか?

だからなぜただやらないでください:

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

最初substrの数字は最後の2桁を忘れて、千の区切り文字だけでフォーマットされます。2番目substrは最後の2つの数字を取ります。

于 2013-02-18T07:52:16.517 に答える