2015-11-30 2 views
0

В моей программе я хочу, чтобы число конвертировалось в формат денег, например, у меня есть значения $ a, $ b, добавляющие эти числа, конечный результат должен быть отображен в формате денег, означает add with, (запятая для вышеуказанных тысяч значений) и десятичное значениеКак применить запятую к числу с десятичной запятой в php

$a = 1095362.2362548; 

$b =155482.94974120325; 

$result = $a + $b; 

echo $result; 

ответ +1250845,18599600325, но я хочу, результат должен быть как 12,50,845.18 я стараюсь как

echo number_format($result,2,'.',','); 

но результат 1,250,845.18 это тоже не правильно как я могу это сделать

+1

Не могли бы вы объяснить, как «12,50,845.18' будет работать как ожидаемый результат? Зачем вам нужно, чтобы 1 ',' составлял 3 цифры, а другой ',' должен быть на 2 цифры от предыдущего ','? –

+0

errr ... номер '1250845' составляет один миллион двести пятьдесят тысяч восемьсот сорок пять, так что' number_format' правильный – RamRaider

+0

Я не заметил использования точности '2' в' round' ~ Я подошел поближе и увидел, что мой ошибочный комментарий удалил комментарий, однако в этом случае он лишний, если вы используете ту же точность в number_format – RamRaider

ответ

1

Попробуйте это:

function formatInIndianStyle($num) 
{ 
    // This is my function 
    $pos = strpos((string) $num, "."); 
    if ($pos === false) 
    { 
     $decimalpart = "00"; 
    } 
    else 
    { 
     $decimalpart = substr($num, $pos + 1, 2); 
     $num = substr($num, 0, $pos); 
    } 

    if (strlen($num) > 3 & strlen($num) <= 12) 
    { 
     $last3digits = substr($num, -3); 
     $numexceptlastdigits = substr($num, 0, -3); 
     $formatted = makecomma($numexceptlastdigits); 
     $stringtoreturn = $formatted . "," . $last3digits . "." . $decimalpart; 
    } 
    elseif (strlen($num) <= 3) 
    { 
     $stringtoreturn = $num . "." . $decimalpart; 
    } 
    elseif (strlen($num) > 12) 
    { 
     $stringtoreturn = number_format($num, 2); 
    } 

    if (substr($stringtoreturn, 0, 2) == "-,") 
    { 
     $stringtoreturn = "-" . substr($stringtoreturn, 2); 
    } 

    return $stringtoreturn; 
} 

function makecomma($input) 
{ 
    // This function is written by some anonymous person - I got it from Google 
    if (strlen($input) <= 2) 
    { 
     return $input; 
    } 
    $length = substr($input, 0, strlen($input) - 2); 
    $formatted_input = makecomma($length) . "," . substr($input, -2); 
    return $formatted_input; 
} 

$a = 1095362.2362548; 
$b = 155482.94974120325; 
$result = $a + $b; 

echo formatInIndianStyle($result); 

Этот выход, как 12,50,845.18.

Примечание: Вы можете получить вышеупомянутый метод здесь: http://php.net/manual/en/function.number-format.php#40558

2

Вы можете использовать эту функцию для а затем number_format(), его работать так же, как number_format также вы можете настроить в нем.

<?php 

function my_number_format($number, $dec_point, $thousands_sep) 
{ 
    $was_neg = $number < 0; // Because +0 == -0 
    $number = abs($number); 

    $tmp = explode('.', $number); 
    $out = number_format($tmp[0], 0, $dec_point, $thousands_sep); 
    if (isset($tmp[1])) $out .= $dec_point.$tmp[1]; 

    if ($was_neg) $out = "-$out"; 

    return $out; 
} 

$a = 1095362.2362548; 

$b =155482.94974120325; 

$result = $a + $b; 

echo my_number_format(round($result,2),'.',','); 

?> 
1

Для этого используйте встроенную функцию money_format(). Должен выполнять эту работу.

Смежные вопросы