2017-04-05 8 views
1

Ich verwende Methode „Ext.util.Format.number“ Wert Zeichenfolge zu konvertieren, nach einem bestimmten Format. Aber diese Methode fügt extra (Parasit) Dezimalzahl hinzu.Ext.util.Format.number fügen Sie zusätzliche Dezimalstellen

Mit diesem Code:

var strValue = Ext.util.Format.number(value, this.displayFormat); 

Zum Beispiel, wenn

  • Displayformat = "0,000.00 ############"
  • Wert = 102,15

Nach der Konvertierung ist strValue nicht gleich 102.15 sondern 102.15000000000001

Gibt es einen Weg, um sicher zu sein, dass „Ext.util.Format.number“ nie extra/Parasiten dezimal hinzufügen?

Dank

Antwort

1

Da 102.15 und 102,15000000000001 sind nicht unterscheidbar (*) in JavaScript, es liegt an Ihnen, ein Zahlenformat zu wählen, die nicht so viele Ziffern enthält. Ext.util.Format.number hat keine Möglichkeit, die korrekte Ausgabe zu bestimmen.

(*) versuchen 102.15 === 102.15000000000001 in Ihrer Javascript-Konsole - es gibt true

0

Do parseFloat (strValue) nach dieser Formatierung. Ich denke, das ist, was du suchst.

0

Dank alle für Ihre Antwort

@Harshit Shah

kann ich nicht "parseFloat", weil am Ende verwende ich brauche um einen String (formatiert) Wert zu haben. Vor der Formatierung habe ich den Gleitkommawert bereits gekürzt, indem ich zusätzliche Dezimalstellen entfernt habe, aber ohne Erfolg.

@ammoQ

Sie haben Recht. Effektiv für Javascript 102.15 === 102.15000000000001 sind gleich. Aber wie Sie vorschlagen, mit einer Nachkommastelle weniger, es ist nicht gleich (1 02.15 === 102.1500000000001 =>false). Ich verwende ein Format mit einer geringeren Genauigkeit.

Danke.

Verwandte Themen