PHP |自定义印度货币格式函数不考虑小数
PHP | Custom Indian Money format function doesn't consider decimals
我有这个函数可以将数字转换为印度货币格式。
function IND_money_format($money)
{
$len = strlen($money);
$m = '';
$money = strrev($money);
for($i=0;$i<$len;$i++){
if(( $i==3 || ($i>3 && ($i-1)%2==0) )&& $i!=$len){
$m .=',';
}
$m .=$money[$i];
}
return strrev($m);
}
如果我将整数而不是小数作为输入,则输出很好。
例如:
3 => 3
30 => 30
300 => 300
3000 => 3,000
459600 => 4,59,600
但是如果我给出十进制数,输出就会损坏
例如:
379.50 => 37,9.5
我该如何解决这个问题?
我不知道这是否是正确的方法,但它目前似乎有效。
我正在做的是
- 从数字中提取小数部分作为字符串
- 删除小数点前的所有零(
0.5
变为 .5
)
- 只需将十进制字符串连接到最终答案即可。
所以函数变成了这样:
public function IND_money_format($money){
$decimal = (string)($money - floor($money));
$money = floor($money);
$len = strlen($money);
$m = '';
$money = strrev($money);
for($i=0;$i<$len;$i++){
if(( $i==3 || ($i>3 && ($i-1)%2==0) )&& $i!=$len){
$m .=',';
}
$m .=$money[$i];
}
$a = strrev($m);
// $a = $decimal;
$decimal = preg_replace("/0\./i", ".", $decimal);
if( $decimal != '0'){
$a = $a.$decimal;
}
return $a;
}
有人可以查看此代码吗?
我有这个函数可以将数字转换为印度货币格式。
function IND_money_format($money)
{
$len = strlen($money);
$m = '';
$money = strrev($money);
for($i=0;$i<$len;$i++){
if(( $i==3 || ($i>3 && ($i-1)%2==0) )&& $i!=$len){
$m .=',';
}
$m .=$money[$i];
}
return strrev($m);
}
如果我将整数而不是小数作为输入,则输出很好。 例如:
3 => 3
30 => 30
300 => 300
3000 => 3,000
459600 => 4,59,600
但是如果我给出十进制数,输出就会损坏 例如:
379.50 => 37,9.5
我该如何解决这个问题?
我不知道这是否是正确的方法,但它目前似乎有效。 我正在做的是
- 从数字中提取小数部分作为字符串
- 删除小数点前的所有零(
0.5
变为.5
) - 只需将十进制字符串连接到最终答案即可。
所以函数变成了这样:
public function IND_money_format($money){
$decimal = (string)($money - floor($money));
$money = floor($money);
$len = strlen($money);
$m = '';
$money = strrev($money);
for($i=0;$i<$len;$i++){
if(( $i==3 || ($i>3 && ($i-1)%2==0) )&& $i!=$len){
$m .=',';
}
$m .=$money[$i];
}
$a = strrev($m);
// $a = $decimal;
$decimal = preg_replace("/0\./i", ".", $decimal);
if( $decimal != '0'){
$a = $a.$decimal;
}
return $a;
}
有人可以查看此代码吗?