2012-06-29 38 views
31

Tôi đang sử dụng mẫu Flask/Jinja2 để hiển thị số sử dụng | float bộ lọc.Cách sử dụng bộ lọc nổi để chỉ hiển thị hai chữ số sau dấu thập phân?

Đây là mã của tôi

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

Output là một chút vụng về:

17/189 (8.99470899471%) 

Tôi đang tìm kiếm một cách để làm cho những nơi sau khi chấm giới hạn trong một số ví dụ 2.

đầu ra mong muốn:

17/189 (8.99%) 

Trả lời

48

Hóa là khá đơn giản:

Mã của tôi:

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

có thể được thay đổi một chút với:

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

hoặc sử dụng định dạng:

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

tham khảo có thể được tìm thấy ở đây trên jinja2 github issue 70

34

Bạn có thể sử dụng round để định dạng một float đến một độ chính xác nhất định.

Trích từ the docs:

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

Vòng số với một độ chính xác nhất định. Tham số đầu tiên xác định chính xác (mặc định là 0), thứ hai phương pháp làm tròn:

  • common vòng lên hoặc xuống
  • ceil luôn làm tròn lên
  • floor luôn làm tròn xuống

Nếu bạn không chỉ định phương thức common sẽ được sử dụng.

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

Lưu ý rằng ngay cả khi làm tròn đến 0 chính xác, một float được trả về. Nếu bạn cần một số nguyên thực, ống thông qua int:

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

này nên được đánh dấu là câu trả lời đúng – bcattle

+0

Trừ rằng 'tròn (2)' sẽ không trả về '42 .00 ', kể cả khi bạn phải tuần tự hóa một giá trị 'Decimal()'. – lol

+0

@lol câu hỏi là làm tròn không định dạng. Ngay cả khi OP muốn định dạng. In số thập phân cũng có giao dịch với ngôn ngữ. Làm tròn là một phép toán trong khi in một giá trị được định dạng chỉ là trực quan. Trong câu hỏi OP mặc dù là tốt hơn để in 100% hơn 100,00%;) –

-2

(tôi giả sử bạn sử dụng để Ionic v2)

Sử dụng mã này front-end:

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

và đặt các chức năng sau vào.ts file:

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

Dưới đây là một cách tiếp cận ::

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

Tinh chỉnh nó theo ý muốn :)

Các vấn đề liên quan