Nabend, gelesen hab ich schon viel, aber ich möchte wissen, was der "Goldstandard" wäre, um Strings, die numerische Werte enthalten (sollten), umzuwandeln. Bisher habe ich: function round_i(v) { let num = parseInt(v, 10); return isNaN(num) ? 0 : num; } function round_f(v, d = -1) { if (d <= 0) { return Number(v); } return Number(v).toFixed(d); // Oder: return Number(Math.round(v + 'e' + d) + 'e-' + d); ? } /** * Nachbau der Rundungsmethode. * @param {number|string} value - Der zu rundende Wert * @param {number} decimals - Anzahl der Nachkommastellen * @param {boolean} halfUp - true für ROUND_HALF_UP (kaufmännisch), false für ROUND_DOWN (Abschneiden) * @return {string} Der gerundete Wert als formtierter String ohne abschließende Nullen */ function round_s(value, decimals, halfUp) { // Falls der Wert als String kommt, in eine Zahl wandeln let num = Number(value); // Verhindert JavaScript-Fließkommafehler durch Skalierung (z.B. 10^2 = 100) let factor = Math.pow(10, decimals); let tempResult; if (halfUp) { // Kaufmännisches runden: // Math.round() rundet in JS standardmäßig kaufmännisch tempResult = Math.round(num * factor) / factor; } else { // Striktes Abschneiden (Gegen Null runden): // Math.trunc() schneidet die Nachkommastellen einfach ab (funktioniert für positiv wie negativ) tempResult = Math.trunc(num * factor) / factor; } return tempResult.toFixed(decimals); } Jede Funktion soll sowohl mit Zeichenketten als auch mit schon umgewandelten Werten funktionieren (da ich in Vanilla-JS ja keine Typsicherheit habe). Optional soll die Anzahl der Nachkommastellen angegeben werden dürfen. round_i braucht logischerweise keinen Nachkommastellenparamter... Aber ist parseInt richtig, oder sollte eher Math.round an dieser Stelle verwendet werden? Sind die Default-Paramter so richtig? Und habe ich noch bestimmte Edge-Cases übersehen?