Để lấy số chữ số thập phân xấp xỉ mà kiểu float này chính xác, dùng thuộc tính precision của numpy.finfo() trong NumPy Python. Tham số đầu tiên của finfo() là kiểu float cần lấy thông tin.
Các thuộc tính khác: iexp (số bit phần mũ), min (giá trị nhỏ nhất), max (giá trị lớn nhất).
Các bước thực hiện
Nhập NumPy:
import numpy as np
Kiểm tra float16:
a = np.finfo(np.float16(45.976))
print("Độ chính xác (số chữ số thập phân)...\n", a.precision)
print("Số bit phần mũ...\n", a.iexp)
print("Giá trị nhỏ nhất float16...\n", a.min)
print("Giá trị lớn nhất float16...\n", a.max)
Kiểm tra float32:
b = np.finfo(np.float32(22.3))
print("\nĐộ chính xác...\n", b.precision)
print("Số bit phần mũ...\n", b.iexp)
print("Giá trị nhỏ nhất float32...\n", b.min)
print("Giá trị lớn nhất float32...\n", b.max)
Kiểm tra float64:
c = np.finfo(np.float64(29.2))
print("\nĐộ chính xác...\n", c.precision)
print("Số bit phần mũ...\n", c.iexp)
print("Giá trị nhỏ nhất float64...\n", c.min)
print("Giá trị lớn nhất float64...\n", c.max)
Ví dụ hoàn chỉnh
import numpy as np
# float16
a = np.finfo(np.float16(45.976))
print("Độ chính xác (số chữ số thập phân)...\n", a.precision)
print("Số bit phần mũ...\n", a.iexp)
print("Giá trị nhỏ nhất float16...\n", a.min)
print("Giá trị lớn nhất float16...\n", a.max)
# float32
b = np.finfo(np.float32(22.3))
print("\nĐộ chính xác...\n", b.precision)
print("Số bit phần mũ...\n", b.iexp)
print("Giá trị nhỏ nhất float32...\n", b.min)
print("Giá trị lớn nhất float32...\n", b.max)
# float64
c = np.finfo(np.float64(29.2))
print("\nĐộ chính xác...\n", c.precision)
print("Số bit phần mũ...\n", c.iexp)
print("Giá trị nhỏ nhất float64...\n", c.min)
print("Giá trị lớn nhất float64...\n", c.max)
Kết quả đầu ra
Độ chính xác (số chữ số thập phân)...
3
Số bit phần mũ...
5
Giá trị nhỏ nhất float16...
-65500.0
Giá trị lớn nhất float16...
65500.0
Độ chính xác...
6
Số bit phần mũ...
8
Giá trị nhỏ nhất float32...
-3.4028235e+38
Giá trị lớn nhất float32...
3.4028235e+38
Độ chính xác...
15
Số bit phần mũ...
11
Giá trị nhỏ nhất float64...
-1.7976931348623157e+308
Giá trị lớn nhất float64...
1.7976931348623157e+308