2012-06-29 8 views
31

Ich verwende Flask/Jinja2 Vorlage, um eine Nummer mit | float Filter anzuzeigen.Wie verwendet man den Float-Filter, um nur zwei Nachkommastellen anzuzeigen?

Hier ist mein Code

{% set proc_err = nb_err|length/sum * 100 %} 
({{proc_err|float}}%) 

Ausgang ein wenig umständlich ist:

17/189 (8.99470899471%) 

ich nach einem Weg suchen, die Orte nach Punkt beschränkt sich auf eine Zahl machen z.B. 2.

gewünschte Ausgabe:

17/189 (8.99%) 

Antwort

48

Es stellt sich ganz einfach sein:

Mein Code:

{% set proc_err = nb_err|length/sum * 100 %} 
({{'%0.2f' % proc_err|float}}%) 
:

{% set proc_err = nb_err|length/sum * 100 %} 
({{proc_err|float}}%) 

Kann ein wenig mit geändert werden

oder unter Verwendung Format:

({{'%0.2f'| format(proc_err|float)}}%) 

Referenz kann hier auf jinja2 github issue 70

34

finden Sie round eine float auf eine bestimmte Genauigkeit zu formatieren können.

von the docs Extrahiert:

round(value, precision=0, method='common')

Rund um die Zahl auf eine bestimmte Genauigkeit. Der erste Parameter gibt die Genauigkeit (Standardwert ist 0), die zweite das Rundungsverfahren:

  • common Runden entweder nach oben oder nach unten
  • ceil immer aufrundet
  • floor immer abrundet

Wenn Sie keine Methode angeben, wird common verwendet.

{{ 42.55|round }} 
    -> 43.0 
{{ 42.55|round(1, 'floor') }} 
    -> 42.5 

Beachten Sie, dass, auch wenn auf 0 Genauigkeit gerundet, ein float zurückgeführt wird. Wenn Sie eine echte Ganzzahl benötigen, Rohr es durch int:

{{ 42.55|round|int }} 
    -> 43 
+0

Dies sollte als die richtige Antwort markiert – bcattle

+0

Außer, dass 'Runde (2)' wird niemals '42 .00 'zurückgeben, auch wenn Sie einen 'Decimal()' Wert serialisieren müssen. – lol

+0

@lol die Frage dreht sich um das Runden nicht formatieren. Selbst wenn das OP die Formatierung wollte. Das Drucken von Dezimalzahlen funktioniert auch mit Gebietsschemas. Das Runden ist eine mathematische Operation, während das Drucken eines formatierten Werts nur visuell ist. In OP-Frage ist es jedoch besser, 100% als 100.00% zu drucken;) –

-2

(ich nehme an, Sie zu Ionic v2 verwenden)

Mit dieser Front-End-Code:

<div *ngIf="device.usage > 0"> 
    {{ Round(device.usage)}} min 
</div> 

und setzen die folgende Funktion in die.ts-Datei:

Round(number):number 
{ 
    return parseFloat(Number((number/1000)/60).toFixed(2)); 
} 
0

Hier ist ein Ansatz ::

{{ "%.2f"|format(result) }} 

zwicken, wie Sie mögen :)

Verwandte Themen