2016-10-10 4 views
3

Gibt es eine Möglichkeit mit NumberFormat zu display:Dart - Number

  • '15', wenn Doppel Wert 15.00
  • '15 .50' , wenn Doppel Wert 15,50

Vielen Dank für Ihre Hilfe .

Antwort

3

Eigentlich, denke ich, ist es einfacher, mit truncateToDouble() und toStringAsFixed() und nicht NumberFormat überhaupt verwenden zu gehen:

n.toStringAsFixed(n.truncateToDouble() == n ? 0 : 2); 

So zum Beispiel:

main() { 
    double n1 = 15.00; 
    double n2 = 15.50; 

    print(format(n1)); 
    print(format(n2)); 
} 

String format(double n) { 
    return n.toStringAsFixed(n.truncateToDouble() == n ? 0 : 2); 
} 

Zur Konsole drucken:

15 
15.50 
+0

Ich muss darüber lachen, für eine Sprache, die behauptet, knapp zu sein – fostandy

4

Edit: Die Lösung von Martin geschrieben seens eine Eins, besser sein

Ich glaube nicht, diese direkt durchgeführt werden kann. Sie werden wahrscheinlich brauchen etwas wie folgt aus:

final f = new NumberFormat("###.00"); 

String format(num n) { 
    final s = f.format(n); 
    return s.endsWith('00') ? s.substring(0, s.length - 3) : s; 
} 
0

Nicht sehr leicht. Interpretieren, was Sie wollen, wie das Drucken null Dezimalstellen, wenn es ein Integer-Wert ist und genau zwei, wenn es ein Schwimmer ist, könnten Sie

var forInts = new NumberFormat(); 
var forFractions = new NumberFormat(); 

forFractions.minimumFractionDigits = 2; 
forFractions.maximumFractionDigits = 2; 

format(num n) => 
    n == n.truncate() ? forInts.format(n) : forFractions.format(n); 

print(format(15.50)); 
print(format(15.0)); 

tun, aber es gibt wenig Vorteil bei der Verwendung Number für diesen, wenn Sie das Ergebnis wollen anders drucken für verschiedene Locales.