2010-10-31 42 views
6

Có thể nào đó bằng cách nào đó mô phỏng nổi độ chính xác đơn trong Javascript? Theo blog của Doug Crockford "Số là điểm nổi 64 bit", nhưng tôi phải sử dụng duy nhất một thuật toán chuyển C++ để tính toán sai số float chính xác đơn.Thi đua nổi chính xác đơn trong Javascript (float32)

+0

Hai nhận xét: (1) Từ cuối cùng phải là "lỗi", không phải "sai". "lỗi" là một thuật ngữ kỹ thuật trong việc xử lý các tính toán dấu chấm động. (2) Bạn có thể đưa ra một số bối cảnh tại sao bạn cần lỗi trong một phép tính dấu chấm động? Nó có thể là có những cách khác để đạt được mục tiêu cuối cùng của bạn mà không cần mô phỏng độ chính xác đơn trong javascript. –

Trả lời

4

Chuẩn ES6 có Math.fround() chuyển đổi float64 thành float32 và sau đó quay lại một lần nữa, hiệu quả làm tròn phao cho độ chính xác float32. Xem this article để biết chi tiết.

-1

Thử chức năng JavaScript này. Nó sử dụng .toFixed (6) để làm tròn số đến sáu chữ số thập phân.

function ToSingle(s) { 
s = s.toString().toUpperCase(); 
if (s.indexOf("E") == -1) s = parseFloat(s).toExponential().toUpperCase(); 
if (s.indexOf("E") == -1) return s 

var o = s.split("E"); 
var s1 = o[0]; 

if (s1.indexOf(".") == -1) return s 
if (s1.split(".")[1].length < 7) return s; 

var num = parseFloat(s1); 
if (num + "" == "NaN") return s; 

return num.toFixed(6) + "E" + o[1]; 
} 
Các vấn đề liên quan