Je souhaite prendre un nombre réel et renvoyer le nombre le plus proche, avec la fraction la plus proche disponible dans le jeu de caractères UTF-8, appropriée.Conversion des flottants en leur fraction la plus proche (caractère UTF-8)
0/4 = 0.00 = # < .125
1/4 = 0.25 = ¼ # > .125 & < .375
2/4 = 0.50 = ½ # > .375 & < .625
3/4 = 0.75 = ¾ # > .625 & < .875
4/4 = 1.00 = # > .875
J'ai fait cette fonction pour faire cette tâche:
function displayFraction($realNumber)
{
if (!is_float($realNumber))
{
return $realNumber;
}
list($number, $decimal) = explode('.', $realNumber);
$decimal = '.' . $decimal;
switch($decimal)
{
case $decimal < 0.125:
return $number;
case $decimal > 0.125 && $decimal < 0.375:
return $number . '¼'; # 188 ¼ ¼
case $decimal > 0.375 && $decimal < 0.625:
return $number . '½'; # 189 ½ ½
case $decimal > 0.625 && $decimal < 0.875:
return $number . '¾'; # 190 ¾ ¾
case $decimal < 0.875:
return ++$number;
}
}
Quelles sont les mieux/façon de faire diffrent cela?
echo displayFraction(3.1) . PHP_EOL; # Outputs: 3
echo displayFraction(3.141593) . PHP_EOL; # Outputs: 3¼
echo displayFraction(3.267432) . PHP_EOL; # Outputs: 3¼
echo displayFraction(3.38) . PHP_EOL; # Outputs: 3½
Élargir mon esprit!
Vous avez également donné une bonne réponse, je voudrais pouvoir donner plus que juste un vote pour cela, car pour cette question il y avait plus d'une bonne réponse, où l'âme a donné la réponse la plus correcte, je me suis senti. Encore, merci pour votre contribution, vous m'avez donné des idées, et des choses à penser. –