Tìm kiếm trang web

javascript - Ép giá trị float khi sử dụng JSON.stringify


Tôi muốn ép một Số thành Số thực, sau khi JSON.stringify(). Đáng tiếc là JSON.stringify() xóa 1 .0.

Ví dụ :

JSON.stringify(1.0) // "1"

Kết quả mong muốn:

JSON.stringify(1.0) // "1.0"

Tôi đang sử dụng một API yêu cầu một đối tượng ở định dạng JSON, nhưng nó chỉ hiểu các giá trị thập phân. Vì vậy, tôi muốn hỏi liệu có thể sử dụng JSON.stringify để tạo chuỗi với các giá trị thập phân mà không cần sử dụng phép biến đổi Regex-.replace không.

Câu trả lời #1

Câu trả lời thẳng thắn và khá ngắn gọn cho câu hỏi của bạn là không, bạn không thể tùy chỉnh việc tuần tự hóa các giá trị số với JSON.stringify. Xem JSON.stringify() trên MDN.

Nếu bạn thực sự cần số thập phân cho các số nguyên của mình, bạn phải sử dụng "regex-magic" như bạn đề cập trong câu hỏi của mình hoặc tìm một thư viện cho phép bạn thực hiện những mẹo như vậy. Nếu bạn không xử lý các đối tượng quá phức tạp hoặc nhiều loại khác nhau, bạn có lẽ có thể chuyển chúng thành chuỗi một cách thủ công.

Nhân tiện, điều đó nghe rất, rất đáng nghi với một API cần được cung cấp bằng JSON định dạng tùy chỉnh. Tôi sẽ kiểm tra kỹ ba lần xem có cách nào khác để sử dụng nó không.

Câu trả lời #2

Sử dụng toFixed thay vì stringify. Ví dụ:

var num = 1;
var numStr = num.toFixed(1); //result is "1.0"

Tìm hiểu thêm về toFixed - http://www.w3schools.com/jsref/jsref_tofixed.asp.

Để rõ ràng, chúng ta đang nói về việc chuyển đổi số thành chuỗi chứ không phải số sang float (kiểu này không tồn tại trong JavaScript) như có thể hiểu từ mô tả câu hỏi. toFixed sẽ luôn trả về Chuỗi với số lượng chữ số thập phân được chỉ định.

Bài viết liên quan