Les décimals en Javascript

Javascript, comme tout autre langage de programmation légèrement difficile, ne sait pas que “1″+1=2 … Il nous donne plus NaN [Not a Number]
Javascript ne sait pas additionner les textes qui sont des nombres et les nombres véritables, contrairement à PHP, où on peut faire n’importe quoi n’importe quand n’importe presque où.
Alors il faut prendre grand soin de transformer la variable de texte en variable de nombre (string en integer/float)
Integer: Nombre entier
Float: Nombre décimal
Vous devinez donc dans lequel nous allons prendre!
Donc nous avons:

var prix = “10.00″;

Ceci est un tarif de base d’une Impreza (dans ma tête ‘-_- gnnnnh). Nous allons donc déterminer combien de Subaru Impreza on veut, et calculer le sous-total de cette fabuleuse transaction.

<script language=”javascript”>
function calculSousTotal(){

var prix = 10.00; // prix de la Subaru
var qte = document.getElementById(”qte”).value; // on va chercher la quantité
var soustotal = prix*parseFloat(qte ); // avec la fonction parseFloat, nous transformons la valeur de texte en valeur décimal
soustotal = soustotal.toFixed(2); // ici on dit combien de chiffre après la virgule nous désirons pour ce nombre décimal.

alert(”Le sous-total pour “+qte+” Subaru de “+prix+”$ chacune est de “+soustotal+”$.”); //voilà! on a le résultat!
} </script>
Entrez la quantité désiré:
<input name=”qte” value=”5″ onkeyup=”calculSousTotal()” type=”text” />

Bon la fonction cool ici que j’ai découvert, c’est variable.toFixed(n).Plus simple que ça, tu meurs. Ah ouaiiiss, j’aime ça comme ça! :D Simple, efficace, et on perd pas de temps pour toujours avoir les décimals tout le temps. La VariableFinal.toFixed(2) et toc! All right! Party!

posted by Figuss in Non classé and have

Comments (3 Responses)

Simon le 15 novembre 2007 à 19:23

Salut!

c’est cool! Il te l’arrondit en plus ;) si tu change le prix pour kkchose de plus funky… genre 10.008… et que t’en mets 2 (ce qui fait 20.016) il arrondit à 20.02.

Le seul défaut c’est que si tu veux continuer à faire des calculs plus tard avec ta variable soustotal, tu viens de perdre la traine de décimale. Anyway tu peux te faire un autre variable comme ça tu touches pas à ta variable de base.

var soustotalArrondit = soustotal.toFixed(2);

En Java on a kkchose de cool, c’est des DecimalFormat. C’est dans le package java.text

par exemple si tu fais la methode suivante:

public String getSubTotal(String qty){
DecimalFormat priceFormat = new DecimalFormat(”0.00 $”);

double price = 10.008;
double numericQty = Double.valueOf( qty );

double subtotal = numericQty*price;

return priceFormat.format( subtotal );
}

Ben pour, exemple qty = 3 ça va retourner un String value of “30.02 $”

OUI :D ça rajoute le $ pour toi :P

Ok j’avoue que quand tu veux faire de l’internationalisation c’est pas super cool d’hardcored des currency codes mais là on change de sujet :P

CIAOOOO (sti qu’on est geeks)

Figuss le 15 novembre 2007 à 21:50

Ce pourquoi on utiliserait le toFixed() seulement à l’affichage, afin que notre nombre a bien été calculé sans arrondissement (comme les taxes genre… stupide calcul de taxes grrrr)

Pis pour ton geekness, c’est ceux qui font du Java qu’ils le sont, pas ceux qui font du JavaScript! On a pas de “packages” et d’extravagances bidons! Mouhahahah! :P [Je suis vraiment une innocente qui s'est pas de quoi elle parle...]:D

Simon le 16 novembre 2007 à 11:23

La plus geek c’est celle qui fait un blog de truc de java scripting ;)

Mais c’est intéressant ce que tu postes :) keep it up!

Laisse un commentaire

Nom
Courriel
Site web
Message