2013-05-17 40 views
9

Tôi muốn nhân lên bằng cách sử dụng javascript.Khi tôi nhân 2 và 0,15 tôi nhận được 0,3 nhưng khi tôi nhân 3 và 0,15 tôi nhận 0,44999999999999996 Tôi muốn nhận 0,45 như kết quả. Làm cách nào tôi có thể làm điều đó với javascript?Nhân int và float trong javascript

+1

Không có 'int' hoặc' float' trong JavaScript. Mọi thứ đều là 'double'. Điều đó đang được nói, bạn đang tìm kiếm ['toFixed()'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toFixed) nếu bạn muốn chuyển đổi giá trị của bạn thành một chuỗi. – Zeta

+0

http://en.wikipedia.org/wiki/Floating_point – Sirko

+0

Làm thế nào tôi có thể nhận được 0,45 kết quả cho phép nhân 0,15 và 3? –

Trả lời

12

Đó là lỗi làm tròn. Bạn có thể muốn làm tròn số của mình tới số lượng chữ số cố định, như sau:

parseFloat((your_number).toFixed(2)); 
+1

Thật tuyệt, nhưng nó tạo ra chuỗi FWIW! –

+0

Vì vậy, parsefloat nó – mplungjan

+0

@mplungjan Vâng, tôi biết rằng, OP có thể không. –

4

Thật không may điều này xảy ra bằng bất kỳ ngôn ngữ nào sử dụng số học dấu phẩy động. Đó là một tạo phẩm phát sinh khi các hoạt động điểm động được mã hóa thành nhị phân, các thao tác được thực hiện và được giải mã từ nhị phân để báo cáo câu trả lời dưới dạng bạn mong muốn.

Tùy thuộc vào những gì bạn muốn thực hiện với đầu ra, bạn có thể gọi hàm tròn() để làm tròn đến số chữ số thập phân hoặc so sánh đầu ra với giá trị bằng một số (nhỏ) được gọi là dung sai . Ví dụ. hai số được coi là bằng nhau nếu chênh lệch tuyệt đối của chúng nhỏ hơn so với sự khoan dung này.

+0

cảm ơn nhiều :) –

Các vấn đề liên quan