Format d'un nombre (Décimales)

Format d'un nombre (Décimales) - PHP - Programmation

Marsh Posté le 05-03-2004 à 10:13:23    

Bonjour,
 
Après plusieurs calculs je voudrais afficher un nombre avec 2 décimales au max et si c'est un entier ou un réel avec une décimale n'afficher que ce qui est utile (pas de 0).
 
ex:
0,00 -> 0
1,30 -> 1,3
1,68 -> 1,68
1,444-> 1,44
1,449-> 1,44
 
Sinon au lieu de 0 après le calcul suivant 5.55+5.55-11.1 j'ai -1.7763568394003E-015!!! et ca je ne comprends pas.

Reply

Marsh Posté le 05-03-2004 à 10:13:23   

Reply

Marsh Posté le 05-03-2004 à 11:04:45    

Reply

Marsh Posté le 05-03-2004 à 11:25:05    

Reply

Marsh Posté le 05-03-2004 à 11:31:42    

C'est une bonne solution anapajari

Reply

Marsh Posté le 05-03-2004 à 12:02:02    

si j'utilise round()
round($val,???)
je met quoi comme argument2 pour mon cas, parce que $val je ne le connais pas ca peut être 12 1.55 ou bien 7.546116 et ce que je veux c'est max 2 decimales et aucune lorsque c'est une valeur entière et une seule lorsque $val est de type 1.70 -> 1.7

Reply

Marsh Posté le 05-03-2004 à 12:11:49    

Cette fonction me paraît être plus appropriée :)
 
<?
function cutzero($value) {  
   return preg_replace("/(\.\d+?)0+$/", "$1", $value)*1;
}
?>
 
Some examples:
 
<?
cutzero("4.7600" );    // returns 4.76
cutzero("4.7604" )      // returns 4.7604
cutzero("4.7000" );    // returns 4.7
cutzero("4.0000" );    // returns 4
?>  

Reply

Marsh Posté le 05-03-2004 à 12:19:18    

oui sauf que ça t'arrondit pas tes nombres à deux chiffres après la virgule.
Donc il faut que tu fasses un truc dans le genre:

Code :
  1. function formatMyNumber($value) { 
  2.    return preg_replace("/(\.\d+?)0+$/", "$1", sprintf("%01.2f", $value));
  3. }

Reply

Marsh Posté le 05-03-2004 à 12:26:51    

en faite, je fais un number_format($val,2)

Reply

Marsh Posté le 05-03-2004 à 12:33:44    

ca fait un arrondi au sup aie :( et le sprintf aussi

Reply

Marsh Posté le 05-03-2004 à 19:04:05    

Tu multiplies par 100, tu tronques le superflu, tu divises par 100, tu affiches le resultat.  
Comme ca, tu n'as que 2 chiffres apres la virgules et non arrondi.


Message édité par cerel le 05-03-2004 à 19:04:29
Reply

Marsh Posté le 05-03-2004 à 19:04:05   

Reply

Marsh Posté le 05-03-2004 à 21:49:08    

exactement ce que j'ai fais
 
Merci pour votre aide

Reply

Marsh Posté le 06-03-2004 à 00:11:37    

Moi j'aurais fait une fonction bien crasseuse avec une boucle qui récupere le dernier chiffre du nombre, qui le vire si c'est un zero et qui continue jusqu'a ce que le dernier ne soit plus un zero :D
Je suis assez faignant sur les regex :ange:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed