ARRONDIR UN NOMBRE AU CENTIÈME

Signaler
Messages postés
57
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
18 novembre 2009
-
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/47138-arrondir-un-nombre-au-centieme

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Salut,

"tu viens, en moins d'une seconde, me prouver que je cherche comme une patate :o"

Je confirme :
http://www.google.fr/search?hl=fr&q=fonction+php+arrondi

Et pour en rajouter une couche, ce genre de code, c'est pas une source, mais un snippet. Ca n'a donc pas sa place ici.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
en vrai, traiter des floats comme ca et caster en int, ca peut provoquer des imperfections (possible lost of precision en java.)

donc utiliser round, c'est une bien meilleur solution.
Messages postés
1
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
28 juin 2008

mais si!! on peut quand meme faire tres simple
il faut ajouter 0.5 avant de prendre la partie entiere!
comme ca l arrondi est correct, tous les nombres dans l interval
[15.68, 15.685[ donneront 15.68 et ceux dans [15.685, 15.69] donneront 15.69

pour reprendre l exemple:
15.687--(x100)--> 1568.7 --(+0.5)-> 1569.2 --(int)--> 1569 --(/100)--> 15.69

bon evidemment c est pas aussi simple qu avec round() ou number_format()
mais quand on se met dans un nouveau languague de programmation
et qu on sait pas s il existe de telles fonctions, ben c est toujours efficace :-)
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

+1

Mais hormis ça pourquoi utiliser des expressions régulière... c'est une perte de perf pour rien... autant utiliser les offset... qui plus est avant de le traiter tu ne vérifie pas que ton $nbre est bien numérique et n'est pas un entier... .. .

@ tchaOo°
Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
4
+1 pour round() et aussi number_format()
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
vive le typage dynamique de php...

un nombre, c'est pas une chaine de caracteres...

de plus, round est une largement meilleur solution.
Messages postés
18
Date d'inscription
dimanche 2 septembre 2007
Statut
Membre
Dernière intervention
27 juin 2008

Sérieux ? Moi qui ai cherché si longtemps pour savoir comment arrondir un nombre et qui ai jamais trouvé, tu viens, en moins d'une seconde, me prouver que je cherche comme une patate :o
Messages postés
31
Date d'inscription
samedi 9 février 2008
Statut
Membre
Dernière intervention
11 septembre 2008

Sinon y'a la fonction round() ... :-°
Messages postés
18
Date d'inscription
dimanche 2 septembre 2007
Statut
Membre
Dernière intervention
27 juin 2008

Peut-être mais l'arrondi n'est pas exacte.

Exemple, j'ai 15,68687.
Si je l'arrondi au centième avec ta technique, j'obtiendrais 15,68. Or c'est faux, le bon résultat est 15,69. Et oui, je chipote mais c'est comme ça.

Je préfère ma technique parce que avec 1 Regex je fais tes 3 calculs :

$arrondi = preg_replace('#([0-9])\.([0-9]{2})([0-9]+)#','$1.$2',$nbre);

Tu multiplies, utilises une Regex, puis divises ... moi j'ai tout dans la mienne.
Messages postés
57
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
18 novembre 2009

Pourquoi faire aussi compliquer?

Tu prends le nombre, tu le multiplie par 1000. Exemple : 1,25412 * 1000 = 1254,12
Puis tu arrondis : 1254.
Et tu redivises par 1000 : 1,254.