2017-02-17 7 views
0

J'ai des problèmes avec ma méthode toFixed(). Avant de l'ajouter sur tous les parseflags qui étaient déjà là, il affichait tous les totaux mais avec trop de décimales. Maintenant, il ne montre rien. Quand je retire le toFixed(), il s'affiche comme il se doit. La console me dit "total.tofixed" n'est pas une fonction, mais cette partie fonctionnait avant que j'ajoute dans les 6 autres commandes toFixed(). Voici mon codeJavascript àFixed() problèmes

var rent = prompt ("Enter your total rent"); 
var food = prompt ("Enter your total food expenditures"); 
var utilities = prompt ("Enter your total utilities costs"); 
var transport = prompt ("Enter your total transportations costs"); 
var internet = prompt ("Enter your internet and cable costs"); 
var other = prompt ("Enter an estimated total for all other expenditures"); 

rent = parseFloat(rent).toFixed(2); 
food = parseFloat(food).toFixed(2); 
utilities = parseFloat(utilities).toFixed(2); 
transport = parseFloat(transport).toFixed(2); 
internet = parseFloat(internet).toFixed(2); 
other = parseFloat(other).toFixed(2); 

var total = rent + food + utilities + transport + other; 
total = total.toFixed(2); //determines "total" variable will use 2 decimal places 
document.write(total); 


var rentPerc = (rent/total)*100; 
var foodPerc = (food/total)*100; 
var utPerc = (utilities/total)*100; 
var transPerc = (transport/total)*100; 
var internetPerc = (internet/total)*100; 
var otherPerc = (other/total)*100; 
var totalPerc = rentPerc + foodPerc + utPerc + transPerc + internetPerc +otherPerc; 
document.write("Total rent:", rent, rentPerc, "Total food", food, foodPerc, "Total utilities:", 
utilities, utPerc, "Total transportation:", transport, transPerc, "Total   internet:", internet, 
internetPerc, "Total other:", other, otherPerc, "Total expenditures:", total,  totalPerc); 
+0

Vous devez convaincre rt ces chaînes en chiffres: '... = + loyer + + nourriture + + utilitaires + + transport + + autre;'. – RobG

Répondre

2

mais cette partie travaillait avant ajouté dans l'autre 6 toFixed() commandes

droit. toFixed() est une méthode sur numéros. toFixed() renvoie chaîne. Donc, rent + food ne fait pas d'ajout, il effectue une concaténation de chaîne.

Appelez uniquement toFixed() sur les valeurs que vous souhaitez afficher. N'utilisez pas sa valeur de retour pour les calculs.

0

toFixed() renvoie le nombre sous forme de chaîne, si vous comparez les nombres, vous devez utiliser à nouveau parseFloat.

L'alternative est

yourString= parseFloat((yourString).toFixed(2)); 
+0

merci, j'ai essayé cela mais ce qui a fini par travailler pour moi était d'abord le parseFloats, puis les calculs, puis enfin le toFixed, séparément. – maria

0

La méthode toFixed(decimals) convertit votre numéro à une chaîne. Donc, dans votre var total vous êtes en train de concaténer des chaînes au lieu d'ajouter. Vous obtenez "total.tofixed" is not a function car une chaîne n'a pas une méthode toFixed().

0

J'ai fait seulement 1 changement utilisé parseFloat avant de passer le paramètre à toFixed

total = total.toFixed(2); //determines "total" variable will use 2 decimal places 

à

total = parseFloat(total).toFixed(2); //determines "total" variable will use 2 decimal places 

Voici l'ensemble de votre code mis à jour à nouveau

var rent = prompt ("Enter your total rent"); 
var food = prompt ("Enter your total food expenditures"); 
var utilities = prompt ("Enter your total utilities costs"); 
var transport = prompt ("Enter your total transportations costs"); 
var internet = prompt ("Enter your internet and cable costs"); 
var other = prompt ("Enter an estimated total for all other expenditures"); 

rent = parseFloat(rent).toFixed(2); 
food = parseFloat(food).toFixed(2); 
utilities = parseFloat(utilities).toFixed(2); 
transport = parseFloat(transport).toFixed(2); 
internet = parseFloat(internet).toFixed(2); 
other = parseFloat(other).toFixed(2); 

var total = rent + food + utilities + transport + other; 
total = parseFloat(total).toFixed(2); //determines "total" variable will use 2 decimal places 
document.write(total); 


var rentPerc = (rent/total)*100; 
var foodPerc = (food/total)*100; 
var utPerc = (utilities/total)*100; 
var transPerc = (transport/total)*100; 
var internetPerc = (internet/total)*100; 
var otherPerc = (other/total)*100; 
var totalPerc = rentPerc + foodPerc + utPerc + transPerc + internetPerc +otherPerc; 
document.write("Total rent:", rent, rentPerc, "Total food", food, foodPerc, "Total utilities:", 
utilities, utPerc, "Total transportation:", transport, transPerc, "Total   internet:", internet, 
internetPerc, "Total other:", other, otherPerc, "Total expenditures:", total,  totalPerc); 
+0

Toujours pas au travail. 'var total = rent + food + ...' concaténera les chaînes. – RobG

+1

ça marche maintenant, merci. – maria

+0

@Maria veuillez accepter la réponse comme correcte si vous la trouvez utile. cela motive les gens à répondre à vos questions. – codemirror