D'arrondi au plus près de la fraction (semestre, trimestre, etc.)
Donc, j'ai besoin de créer les fonctions suivantes, mais ma tête ne peut pas penser de toute possibilité de PHP sans complexe des mathématiques.
- Ronde toujours jusqu'à la décimale près (1.81 = 1.90, 1.89 = 1.90, 1.85 = 1.90)
- Ronde toujours vers le bas à la décimale près (1.81 = 1.80, 1.89 = 1.80, 1.85 = 1.80)
- Ronde toujours jusqu'à la plus proche.x.25 /x.50 /x.75 /x.00 (1.81 = 2, 1.32 = 1.50)
- Ronde toujours inférieur le plus proche.x.25 /x.50 /x.75 /x.00 (1.81 = 1.75, 1.32 = 1.25)
- Ronde toujours jusqu'à la plus proche de x.50 /1 (1.23 = 1.50, 1.83 = 2)
- Ronde toujours inférieur le plus proche x.50 /1 (1.23 = 1, 1.83 = 1.50)
J'ai cherché sur Google pour 2 heures maintenant, et les seules choses qui est venu étaient Excel forums. Est-il possible avec quelques simples lignes de PHP?
- Recherchez
round
,ceil
dans... PHP.net - Je sais que c'est possible avec rond et ceil, mais je ne peux pas créer les fonctions en quelque sorte.
- 2 heures de recherche sur google pourrait ont écrit certains peut-être compliqué, mais le travail des algorithmes
- Cela sent comme des devoirs..
- vous avez raison.
- J'ai besoin de ce fait pour une boutique en ligne pour arrondir les prix des produits.
Vous devez vous connecter pour publier un commentaire.
Puisque vous êtes à la recherche pour quarts (
.00
,.25
,.50
,.75
), multipliez votre nombre par 4, arrondir à l'entier le plus proche que vous le souhaitez (floor
si bas,ceil
si le haut), puis diviser par 4.1.32, jusqu'à la plus proche quatrième:
Même principe s'applique pour toutes les autres fractions, comme tiers ou huitièmes (
.0
,.125
,.25
,.375
,.5
,.625
,.75
,.875
). Par exemple:1.77, jusqu'à la plus proche huitième:
Juste pour le fun, vous pouvez écrire une fonction comme ceci:
round()
seul ne permet pas de fournir la solution à la question de la FpoVeuillez noter que la réponse n'est pas vraiment étanche à l'eau. Depuis que nous avons affaire avec des flotteurs ici, il n'est pas garanti que lorsque vous divisez le nombre arrondi par le dénominateur, il renvoie un soigneusement le numéro de la ronde. Il peut retourner 1.499999999999 au lieu de 1,5. C'est la nature des nombres en virgule flottante.
Un autre tour est nécessaire avant de retourner le numéro de la fonction.
Juste au cas où quelqu'un débarque ici à partir de google comme je l'ai fait 🙂
round(round(2.24 * 8) / 8, 3)
pour obtenir des résultats satisfaisants comme .125, .875 pour convertir le plus proche de 1/8 de fractions de pouces.Oeil à l'exemple #3 sur ici et c'est la moitié de votre solution - http://php.net/manual/en/function.round.php
Selon la
mround()
fonction dans Excel: