Định dạng số thập phân python

Định dạng số thập phân python

Đã đăng vào thg 3 21, 2021 4:23 CH 2 phút đọc

Định dạng số thập phân python

Làm tròn số thực trong Python là chuyện thường ngày, và tụi mình sẽ sử dụng rất nhiều trong khi học Python cùng toán cũng như trong hiển thị các số thực với một số lượng các chữ số thập phân bất kỳ.

À quên, nếu bạn có hứng thú hãy ghé đọc bài về số thực trong Python tutorial này nhé

Ở tip nho nhỏ này, mình sẽ đi làm tròn hai chữ số thập phân nha.

Okay, bắt đầu mình muốn làm tròn kết quả phép tính 1/3

Dùng hàm round()

Hàm này thì khá phổ biến, chỉ cần search làm tròn số trong Python là sẽ hiện bạn ấy. Cùng xem bạn ấy làm tròn hai chữ số thập phân phép tính trên:

>>> round(1/3, 2)
0.33

Trông ngon lành đấy, thử thêm một ví dụ nữa nha. Lần này tớ muốn làm tròn phép tính 7/2 cơ.

>>> round(7/2, 2)
3.5

Ơ, sao chỉ có 3.5 thế kia nhỉ? Làm tròn hai số thập phân kết quả mình mong đợi là 3.50 kia mà. Hmm, coi bộ không ổn với kết quả trả ra số chữ số thập phân nhỏ hơn mình mong đợi rồi. Tiếp theo mình sẽ kiếm cách làm tròn chính xác với hai số thập phân nha.

Chuyển format với string

Cách tiếp theo là mình dùng hàm format() để chuyển đổi với định dạng chuỗi ký tự mong đợi có 2 số phía sau dấu .

>>> "{:.2f}".format(7/2)
'3.50'

Lưu ý nhỏ là ở đây trả ra string đó nha, bạn muốn dùng số thực thì nhớ chuyển đổi kiểu dữ liệu qua số thực với hàm float nhé.

Như vậy nè: float(“{:.2f}”.format(7/2))

Tip hôm nay chỉ có vậy thôi, mong nó hữu ích với bạn nhé 😉

Như thường lệ, bài gốc ở blog của tớ, mời bạn ghé chơi.

BeautyOnCode.

All rights reserved

định dạng chuỗi f :

Đây là điểm mới trong Python 3.6 - chuỗi được đặt trong dấu ngoặc kép như bình thường, được thêm vào f'...giống như cách bạn làm r'...với chuỗi thô. Sau đó, bạn đặt bất cứ thứ gì bạn muốn đặt vào trong chuỗi, biến, số, bên trong dấu ngoặc f'some string text with a {variable} or {number} within that text'- và Python đánh giá như với các phương thức định dạng chuỗi trước đó, ngoại trừ phương thức này dễ đọc hơn nhiều.

>>>a = 3.141592
>>>print(f'My number is {a:.2f} - look at the nice rounding!')

My number is 3.14 - look at the nice rounding!

Bạn có thể thấy trong ví dụ này, chúng tôi định dạng với các vị trí thập phân theo cách tương tự với các phương thức định dạng chuỗi trước đó.

NB acó thể là một số, biến hoặc thậm chí là một biểu thức, ví dụ f'{3*my_func(3.14):02f}'.

Đi về phía trước, với các chuỗi f-code mã mới nên được ưu tiên hơn các phương thức% s hoặc str.format () phổ biến vì chuỗi f nhanh hơn nhiều .

28 hữu ích 0 bình luận chia sẻ

Vì bạn đang nói về số liệu tài chính , bạn KHÔNG MUỐN sử dụng số học dấu phẩy động. Bạn nên sử dụng Decimal.

>>> from decimal import Decimal
>>> Decimal("33.505")
Decimal('33.505')

Định dạng đầu ra văn bản với kiểu mới format()(mặc định là làm tròn một nửa):

>>> print("financial return of outcome 1 = {:.2f}".format(Decimal("33.505")))
financial return of outcome 1 = 33.50
>>> print("financial return of outcome 1 = {:.2f}".format(Decimal("33.515")))
financial return of outcome 1 = 33.52

Xem sự khác biệt về làm tròn do thiếu dấu phẩy động:

>>> round(33.505, 2)
33.51
>>> round(Decimal("33.505"), 2)  # This converts back to float (wrong)
33.51
>>> Decimal(33.505)  # Don't init Decimal from floating-point
Decimal('33.50500000000000255795384873636066913604736328125')

Cách thích hợp để làm tròn các giá trị tài chính :

>>> Decimal("33.505").quantize(Decimal("0.01"))  # Half-even rounding by default
Decimal('33.50')

Nó cũng phổ biến để có các loại làm tròn khác trong các giao dịch khác nhau:

>>> import decimal
>>> Decimal("33.505").quantize(Decimal("0.01"), decimal.ROUND_HALF_DOWN)
Decimal('33.50')
>>> Decimal("33.505").quantize(Decimal("0.01"), decimal.ROUND_HALF_UP)
Decimal('33.51')

Hãy nhớ rằng nếu bạn đang mô phỏng kết quả hoàn trả, bạn có thể sẽ phải làm tròn ở mỗi kỳ lãi, vì bạn không thể trả / nhận phần trăm phần trăm, cũng không nhận được tiền lãi qua phần trăm. Đối với các mô phỏng, việc sử dụng dấu phẩy động do sự không chắc chắn cố hữu là khá phổ biến, nhưng nếu làm như vậy, hãy luôn nhớ rằng lỗi là có. Như vậy, ngay cả các khoản đầu tư lãi cố định có thể khác nhau một chút về lợi nhuận vì điều này.

41 hữu ích 1 bình luận chia sẻ