Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Prüfen auf Dezimalzahl
#1
Hallo zusammen,

ich bin noch recht neu in JS und versuche mich zurecht zu finden. Für ein kleines Skript in meiner Haus-Automatisierung habe ich mir eine kleine Funktion geschrieben, die mir eine Zahl auf zwei Nachkommastellen abschneidet. Runden war in dem Fall keine Option. Die Funktion funktioniert soweit wunderbar, außer es wird eine Ganzzahl übergeben. Dann werden nur die ersten beiden Stellen zurückgegeben.

Beispiel: 5103.151201200 wird zu 5103.15 wie gewünscht, aber 5103 wird zu 51, was natürlich nicht gewünscht ist.

Wie kann man das elegant lösen?

Code:
function CutFloat(str,val) {
    str = str.toString();
    str = str.slice(0, (str.indexOf(".")) + val + 1);
    return Number(str);   
}
Zitieren
#2
Hast du es mal so versucht
Code:
var str=5103.151201200;
console.log(str.toFixed(2));
// ausgabe 5103.15

oder

var str=5103;
console.log(str.toFixed(2));
// ausgabe 5103.00
Meinst du das so
Hier sind alle meine Lösungen aus allen Foren. Ich helfe auch in Facebook-chat
Zitieren
#3
toFixed ist leider auch keine Option, da aus bspw. 5103.156201200 dann wiederum 5103.16 wird statt 5103.15.
Zitieren
#4
Dann schau mal, ob du hier was findest
https://stackoverflow.com/questions/4187...t-rounding
Hier sind alle meine Lösungen aus allen Foren. Ich helfe auch in Facebook-chat
Zitieren
#5
So sollte es klappen
Code:
function calc(theform) {
    var num = theform;
    var with2Decimals = num.toString().match(/^-?\d+(?:\.\d{0,2})?/)[0]
    return Number(with2Decimals).toFixed(2);
}
str=5103.156201200;
console.log(calc(str));//5103.15
str=5103.151201200;
console.log(calc(str));//5103.15
str=5103;
console.log(calc(str));//5103.00
str=5103.9;
console.log(calc(str));//5103.90
Hier sind alle meine Lösungen aus allen Foren. Ich helfe auch in Facebook-chat
Zitieren
#6
Funktioniert wunderbar, vielen Dank!
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste