功能不适用于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)) ;
}
答案 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";