Javascript-forum
Prüfen auf Dezimalzahl - Druckversion

+- Javascript-forum (https://javascript-forum.de)
+-- Forum: Entwicklung (https://javascript-forum.de/forumdisplay.php?fid=4)
+--- Forum: Javascript (https://javascript-forum.de/forumdisplay.php?fid=6)
+--- Thema: Prüfen auf Dezimalzahl (/showthread.php?tid=1433)



Prüfen auf Dezimalzahl - h1ob - 09.09.2022

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);   
}



RE: Prüfen auf Dezimalzahl - admin - 09.09.2022

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


RE: Prüfen auf Dezimalzahl - h1ob - 10.09.2022

toFixed ist leider auch keine Option, da aus bspw. 5103.156201200 dann wiederum 5103.16 wird statt 5103.15.


RE: Prüfen auf Dezimalzahl - admin - 10.09.2022

Dann schau mal, ob du hier was findest
https://stackoverflow.com/questions/4187146/truncate-number-to-two-decimal-places-without-rounding


RE: Prüfen auf Dezimalzahl - admin - 10.09.2022

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



RE: Prüfen auf Dezimalzahl - h1ob - 10.09.2022

Funktioniert wunderbar, vielen Dank!