DataView.getFloat32() đọc một số thực 32-bit (single precision, IEEE 754) tại vị trí byte chỉ định. Kiếm dung lượng bộ nhớ hơn Float64 nhưng độ chính xác thấp hơn (khoảng 7 chữ số thập phân).
Cú pháp
dataView.getFloat32(byteOffset [, littleEndian])
byteOffset: Vị trí byte bắt đầulittleEndian: Tùy chọn,true= little-endian, mặc địnhfalse- Trả về: Số thực 32-bit (float)
Ví dụ cơ bản
const buffer = new ArrayBuffer(8);
const view = new DataView(buffer);
view.setFloat32(1, Math.LOG2E);
console.log(view.getFloat32(1)); // 1.4426950216293335
Độ chính xác Float32
const buffer = new ArrayBuffer(16);
const view = new DataView(buffer);
const value = Math.PI; // 3.141592653589793
view.setFloat64(0, value);
view.setFloat32(8, value);
console.log("Float64:", view.getFloat64(0)); // 3.141592653589793
console.log("Float32:", view.getFloat32(8)); // 3.1415927 (làm tròn ~7 chữ số)
Đọc vị trí chưa ghi
const buffer = new ArrayBuffer(8);
const view = new DataView(buffer);
view.setFloat32(1);
console.log(view.getFloat32(1)); // NaN
Biểu diễn IEEE 754 Single Precision (32 bit)
- 1 bit dấu (sign)
- 8 bit mũ (exponent, bias 127)
- 23 bit mantissa (fraction)
- Phạm vi: ~±3.4×1038
- Độ chính xác: ~7 chữ số thập phân
Ứng dụng
- Đồ họa 3D: vertex, normal, texture coordinates
- Học máy: trọng số mô hình (TensorFlow.js, ONNX)
- Xử lý âm thanh: mẫu PCM 32-bit float
- Dữ liệu cảm biến, IoT (tiết kiệm bandwidth)
- WebGL: buffer attribute, uniform
Lưu ý
- Cần 4 byte từ
byteOffset - Vị trí chưa ghi trả về
NaN - Hỗ trợ các giá trị đặc biệt: Infinity, -Infinity, NaN
- Chuyển đổi tự động sang
number(Float64) khi đọc - có thể mất chính xác ngược lại