Math.fround()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Phương thức tĩnh Math.fround() trả về biểu diễn số thực dấu phẩy động 32-bit độ chính xác đơn gần nhất của một số.
Try it
console.log(Math.fround(5.5));
// Expected output: 5.5
console.log(Math.fround(5.05));
// Expected output: 5.050000190734863
console.log(Math.fround(5));
// Expected output: 5
console.log(Math.fround(-5.05));
// Expected output: -5.050000190734863
Cú pháp
Math.fround(doubleFloat)
Tham số
doubleFloat-
Một số.
Giá trị trả về
Biểu diễn số thực dấu phẩy động 32-bit độ chính xác đơn gần nhất của doubleFloat.
Mô tả
JavaScript sử dụng số thực dấu phẩy động 64-bit (double) nội bộ, cung cấp độ chính xác rất cao. Tuy nhiên, đôi khi bạn làm việc với số thực 32-bit, ví dụ khi đọc giá trị từ Float32Array. Điều này có thể gây nhầm lẫn: so sánh bằng giữa một số 64-bit và một số 32-bit có thể thất bại dù các số có vẻ giống nhau.
Để giải quyết vấn đề này, Math.fround() có thể chuyển đổi số 64-bit về số 32-bit. Nội bộ, JavaScript vẫn coi số đó là 64-bit, nhưng thực hiện "làm tròn chẵn" ở bit thứ 23 của phần định trị và đặt tất cả các bit định trị sau đó về 0. Nếu số nằm ngoài phạm vi số thực 32-bit, trả về Infinity hoặc -Infinity.
Vì fround() là một phương thức tĩnh của Math, bạn luôn sử dụng nó dưới dạng Math.fround(), thay vì là phương thức của một đối tượng Math bạn tạo ra (Math không phải là constructor).
Ví dụ
>Sử dụng Math.fround()
Số 1.5 có thể biểu diễn chính xác trong hệ nhị phân, và giống nhau ở cả 32-bit và 64-bit:
Math.fround(1.5); // 1.5
Math.fround(1.5) === 1.5; // true
Tuy nhiên, số 1.337 không thể biểu diễn chính xác trong hệ nhị phân, nên nó khác nhau ở 32-bit và 64-bit:
Math.fround(1.337); // 1.3370000123977661
Math.fround(1.337) === 1.337; // false
quá lớn cho số thực 32-bit, nên trả về Infinity:
2 ** 150; // 1.42724769270596e+45
Math.fround(2 ** 150); // Infinity
Đặc tả kỹ thuật
| Thông số kỹ thuật |
|---|
| ECMAScript® 2027 Language Specification> # sec-math.fround> |