ARRONDIR UN NOMBRE AU CENTIÈME

cs_Sodams Messages postés 57 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 18 novembre 2009 - 27 juin 2008 à 18:50
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 29 juin 2008 à 18:23
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

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
29 juin 2008 à 18:23
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.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 juin 2008 à 11:53
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.
pistolstar1 Messages postés 1 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 28 juin 2008
28 juin 2008 à 11:47
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 :-)
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
28 juin 2008 à 11:16
+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°
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
28 juin 2008 à 02:29
+1 pour round() et aussi number_format()
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
27 juin 2008 à 20:06
vive le typage dynamique de php...

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

de plus, round est une largement meilleur solution.
cs_Vyk12 Messages postés 18 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 27 juin 2008
27 juin 2008 à 19:36
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
viki53 Messages postés 31 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 11 septembre 2008
27 juin 2008 à 19:14
Sinon y'a la fonction round() ... :-°
cs_Vyk12 Messages postés 18 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 27 juin 2008
27 juin 2008 à 19:09
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.
cs_Sodams Messages postés 57 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 18 novembre 2009
27 juin 2008 à 18:50
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.
Rejoignez-nous