2017-02-17 3 views
0

Ich habe Probleme mit meiner ToFixed() -Methode. Bevor ich es auf alle parseFloats, die bereits dort waren, fügte, zeigte es alle Summen, aber mit zu vielen Dezimalstellen. Jetzt zeigt es nichts an. Wenn ich die toFixed() -Funktion deaktiviere, wird es angezeigt, wie es sollte. Die Konsole sagt mir "total.tofixed" ist keine Funktion, aber dieser Teil hat funktioniert, bevor ich die anderen 6 toFixed() Befehle hinzugefügt habe. Hier ist mein CodeJavascript toFixed() Probleme

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

Du musst dich verständigen Rt diese Strings zurück zu Zahlen: '... = + Miete + + Essen + + Dienstprogramme + + Transport + + andere;'. – RobG

Antwort

2

aber dieser Teil arbeitete, bevor ich in den anderen 6 toFixed hinzugefügt (Befehle)

Rechts. toFixed() ist eine Methode auf Nummern. gibt eine Zeichenfolge zurück. rent + food führt keine Addition durch, es führt String-Verkettung aus.

Nur auf die Werte, die Sie möchten Anzeige. Verwenden Sie den Rückgabewert nicht für Berechnungen.

0

gibt die Nummer als Zeichenfolge zurück, wenn Sie die Zahlen vergleichen, müssen Sie wieder verwenden.

Die Alternative ist

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

Danke, ich habe das versucht, aber was am Ende für mich funktionierte, war zuerst die parseFloats, dann die Berechnungen, dann endlich das ToFixed, getrennt. – maria

0

Verfahren toFixed(decimals) Ihre Zahl in einen String umwandelt. Also in Ihrem total Var verketten Sie Zeichenfolgen, anstatt hinzuzufügen. Sie erhalten "total.tofixed" is not a function, weil eine Zeichenfolge keine -Methode hat.

0

ich gemacht habe nur 1 Wechsel verwendet parseFloat vor den Parameter auf vorbei toFixed

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

zu

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

Hier ist Ihre ganze aktualisierte Code wieder

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

Immer noch nicht zur Arbeit gehen. 'var total = rent + food + ...' verkettet Strings. – RobG

+1

es funktioniert jetzt, danke. – maria

+0

@Maria bitte akzeptieren Sie die Antwort als richtig, wenn Sie es nützlich finden. Es motiviert Menschen, Ihre Fragen zu beantworten. – codemirror