Raketenwilli: Clever - aber eine kleine Warnung für den Weg... toFixed()?

Beitrag lesen

padEnd() erscheint im Hinblick auf die präsentierte Aufgabe als clevere Lösung. Da wir aber ebodys tatsächliche Aufgabe nur bruchstückhaft kennen sollte die folgende Warnung nicht vergessen werden:

  • '1234'.padEnd( 10, '0' ) liefert 1234000000.
  • '1234.0'.padEnd( 10, '0' ) liefert 1234.00000.

Der Unterschied erscheint hier ist elefant-signifikant.

Möglicherweise will @ebody ja etwas wie toFixed():

* Number.parseFloat( '1234'   ).toFixed( 5 )
* Number.parseFloat( '1234.0' ).toFixed( 5 )

Das liefert identische '1234.00000'.

Und wenn ich schon dabei bin:

Number.parseFloat('1.2340').toFixed( 8 ).substr( 0, 10 ) 
→ 1.23400000

Number.parseFloat('1234.0').toFixed( 8 ).substr( 0, 10 ) 
→ 1234.00000

Number.parseFloat('0.1234').toFixed( 8 ).substr( 0, 10 )
→ 0.12340000

Vielleicht ist ja die Aufgabe, immer die gleiche Anzahl an Stellen zu präsentieren? Aber auch hier sei gewarnt: bei Zahlen >= 10000000000 versagt das so grandios wie Murphy vor der Einstellungskomission in Trainspotting. Bei negativen Zahlen ebenso - nur halt „etwas anders“.

Da wären also Fallunterscheidungen zu treffen.

Number.parseFloat('-1').toFixed( 8 ).substr( 0,10 )
→ -1.0000000  // Anzahl Stellen stimmt nicht.

Number.parseFloat('12345678901').toFixed( 8 ).substr( 0, 10 )
→ 1234567890   // Ganz böse: Zahlenwert verändert