cs_Sodams
Messages postés57Date d'inscriptionmercredi 11 juin 2008StatutMembreDernière intervention18 novembre 2009
-
27 juin 2008 à 18:50
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 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.
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és12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 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és1Date d'inscriptionmercredi 12 mars 2008StatutMembreDernière intervention28 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és1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 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és488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 28 juin 2008 à 02:29
+1 pour round() et aussi number_format()
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 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és18Date d'inscriptiondimanche 2 septembre 2007StatutMembreDernière intervention27 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és31Date d'inscriptionsamedi 9 février 2008StatutMembreDernière intervention11 septembre 2008 27 juin 2008 à 19:14
Sinon y'a la fonction round() ... :-°
cs_Vyk12
Messages postés18Date d'inscriptiondimanche 2 septembre 2007StatutMembreDernière intervention27 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 :
29 juin 2008 à 18:23
"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.
28 juin 2008 à 11:53
donc utiliser round, c'est une bien meilleur solution.
28 juin 2008 à 11:47
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 :-)
28 juin 2008 à 11:16
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°
28 juin 2008 à 02:29
27 juin 2008 à 20:06
un nombre, c'est pas une chaine de caracteres...
de plus, round est une largement meilleur solution.
27 juin 2008 à 19:36
27 juin 2008 à 19:14
27 juin 2008 à 19:09
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.
27 juin 2008 à 18:50
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.