This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

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?

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

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
Als Lösung markieren Zitieren
#3
toFixed ist leider auch keine Option, da aus bspw. 5103.156201200 dann wiederum 5103.16 wird statt 5103.15.
Als Lösung markieren 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
Als Lösung markieren Zitieren
#5
So sollte es klappen
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
Als Lösung markieren Zitieren
#6
Funktioniert wunderbar, vielen Dank!
Als Lösung markieren Zitieren


Gehe zu:


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