Comment convertir le nombre décimal à des mots (format de l'argent) à l'aide de PHP?
J'ai juste besoin d'un peu d'aide ici. Parce que je suis entrain de créer un code pour la conversion de décimales pour de l'Argent format dans les mots. Par exemple, si
J'ai ce numéro
'2143.45'
la sortie doit être
'deux mille cent quarante-trois et quarante-cinq cents"
J'ai trouvé un code comme ça, mais je n'ai pas une idée de comment inclure cents.
<?php
function convertNumber($number)
{
list($integer, $fraction) = explode(".", (string) $number);
$output = "";
if ($integer{0} == "-")
{
$output = "negative ";
$integer = ltrim($integer, "-");
}
else if ($integer{0} == "+")
{
$output = "positive ";
$integer = ltrim($integer, "+");
}
if ($integer{0} == "0")
{
$output .= "zero";
}
else
{
$integer = str_pad($integer, 36, "0", STR_PAD_LEFT);
$group = rtrim(chunk_split($integer, 3, " "), " ");
$groups = explode(" ", $group);
$groups2 = array();
foreach ($groups as $g)
{
$groups2[] = convertThreeDigit($g{0}, $g{1}, $g{2});
}
for ($z = 0; $z < count($groups2); $z++)
{
if ($groups2[$z] != "")
{
$output .= $groups2[$z] . convertGroup(11 - $z) . (
$z < 11
&& !array_search('', array_slice($groups2, $z + 1, -1))
&& $groups2[11] != ''
&& $groups[11]{0} == '0'
? " and "
: ", "
);
}
}
$output = rtrim($output, ", ");
}
if ($fraction > 0)
{
$output .= " point";
for ($i = 0; $i < strlen($fraction); $i++)
{
$output .= " " . convertDigit($fraction{$i});
}
}
return $output;
}
function convertGroup($index)
{
switch ($index)
{
case 11:
return " decillion";
case 10:
return " nonillion";
case 9:
return " octillion";
case 8:
return " septillion";
case 7:
return " sextillion";
case 6:
return " quintrillion";
case 5:
return " quadrillion";
case 4:
return " trillion";
case 3:
return " billion";
case 2:
return " million";
case 1:
return " thousand";
case 0:
return "";
}
}
function convertThreeDigit($digit1, $digit2, $digit3)
{
$buffer = "";
if ($digit1 == "0" && $digit2 == "0" && $digit3 == "0")
{
return "";
}
if ($digit1 != "0")
{
$buffer .= convertDigit($digit1) . " hundred";
if ($digit2 != "0" || $digit3 != "0")
{
$buffer .= " and ";
}
}
if ($digit2 != "0")
{
$buffer .= convertTwoDigit($digit2, $digit3);
}
else if ($digit3 != "0")
{
$buffer .= convertDigit($digit3);
}
return $buffer;
}
function convertTwoDigit($digit1, $digit2)
{
if ($digit2 == "0")
{
switch ($digit1)
{
case "1":
return "ten";
case "2":
return "twenty";
case "3":
return "thirty";
case "4":
return "forty";
case "5":
return "fifty";
case "6":
return "sixty";
case "7":
return "seventy";
case "8":
return "eighty";
case "9":
return "ninety";
}
} else if ($digit1 == "1")
{
switch ($digit2)
{
case "1":
return "eleven";
case "2":
return "twelve";
case "3":
return "thirteen";
case "4":
return "fourteen";
case "5":
return "fifteen";
case "6":
return "sixteen";
case "7":
return "seventeen";
case "8":
return "eighteen";
case "9":
return "nineteen";
}
} else
{
$temp = convertDigit($digit2);
switch ($digit1)
{
case "2":
return "twenty-$temp";
case "3":
return "thirty-$temp";
case "4":
return "forty-$temp";
case "5":
return "fifty-$temp";
case "6":
return "sixty-$temp";
case "7":
return "seventy-$temp";
case "8":
return "eighty-$temp";
case "9":
return "ninety-$temp";
}
}
}
function convertDigit($digit)
{
switch ($digit)
{
case "0":
return "zero";
case "1":
return "one";
case "2":
return "two";
case "3":
return "three";
case "4":
return "four";
case "5":
return "five";
case "6":
return "six";
case "7":
return "seven";
case "8":
return "eight";
case "9":
return "nine";
}
}
$num = 500254.89;
$test = convertNumber($num);
echo $test;
?>
- Possible en double stackoverflow.com/questions/3181945/...
- voir cette réponse suivante [Voir cette réponse pour le format de l'inde][1] [1]: stackoverflow.com/a/25967687/1931001
- voir le lien suivant [la Monnaie Indienne format mots à l'aide de php ][1] [1]: stackoverflow.com/a/25967687/1931001
- Très Simple Réponse ici Cliquez Pour aller répondre
Vous devez vous connecter pour publier un commentaire.
Il y a un Bibliothèque PEAR qui peuvent le faire.
MODIFIER
Ou vous pouvez, à la fin de votre code, cela
version indienne
vous pouvez l'utiliser en
de sortie est
De crédit pour le propriétaire: Alex Culango
PS: j'ai édité quelques lignes, car il a peu d'erreur lors de l'dizaines ont "0" et aussi pour le bon décimal de conversion de mots et le peso et centavo de placement.
Si vous ne souhaitez pas modifier la fonction, d'une façon rapide et sale, vous pouvez le faire est par le piratage les parties où il imprime les mots, comme ceci: http://pastebin.com/UwSR8NpV Il devrait fonctionner comme la façon dont vous voulez qu'il.
La fonction que vous utilisez est bien .
Pour
Je pense que le résultat devrait être :
Et non pas :
Mais si vous le voulez, de cette façon , vous pouvez toujours utiliser la fonction que vous utilisez .
Certainement un plus long chemin pour y parvenir !!! :
Affiche :
Vous pouvez aussi intégrer le code ci-dessus des lignes à votre
converNumber
de la fonction où elle est la traduction de la faction partieif ($fraction > 0){ }
.Salut, j'ai résolu ce problème en utilisant
php
Voir ce lien suivant Stackoverflow Meilleur Résultat de la transformation de la Monnaie Indienne format
Utilise:
De sortie:
Je ne sais pas à propos de centimes, mais j'ai créé le code de Roupies Indiennes.
De sortie:
deux mille huit cent cinquante et un Roupies cinq Paise
Je vais écrire un post sur son code description sur guptatreepoint.com