2012-04-19 49 views
6

Tôi có điều này:Xóa chữ số sau hai dấu thập phân không phải số tròn trong javascript?

i=4.568; 
document.write(i.toFixed(2)); 

đầu ra:

4.57 

Nhưng tôi không muốn làm tròn số cuối cùng đến 7, những gì tôi có thể làm gì?

+0

Khi bạn đang làm việc với dấu chấm động nhị phân, mọi thứ như thế này có thể xảy ra. – Pointy

+0

@Pointy: Không; anh ta không muốn làm tròn. – SLaks

+0

Có, nhưng quan điểm của tôi là nói chung khi giao dịch với điểm nổi, bạn không thể đảm bảo rằng hằng số bạn nhập vào sẽ kết thúc là những gì bạn nghĩ, làm tròn hoặc không làm tròn, chủ yếu là vì 2 và 5 tương đối chính: -) – Pointy

Trả lời

9

Sử dụng toán học đơn giản thay thế;

document.write(Math.floor(i * 100)/100); 

(jsFiddle)

Bạn có thể dính vào nó trong chức năng của riêng bạn để tái sử dụng;

function myToFixed(i, digits) { 
    var pow = Math.pow(10, digits); 

    return Math.floor(i * pow)/pow; 
} 

document.write(myToFixed(i, 2)); 

(jsFiddle)

+0

Hàm trả về không có gì ..! –

+0

phải là: document.write (Math.floor (i * 100)/100); –

0

Một cách tiếp cận hơi phức tạp:

var i=4.568, 
    iToString = ​i + ''; 
    i = parseFloat(iToString.match(/\d+\.\d{2}/)); 
console.log(i); 

này có hiệu quả có biến i và chuyển đổi nó thành một chuỗi, và sau đó sử dụng một regex để phù hợp với những con số trước dấu thập phân và sau hai dấu thập phân đó, sử dụng parseFloat() để sau đó chuyển nó trở lại thành một số.

Tài liệu tham khảo:

5

Chỉ cần cắt chuỗi dài hơn:

i.toFixed(3).replace(/\.(\d\d)\d?$/, '.$1') 
+0

cảm ơn bài đăng SLaks – ranjenanil

+0

toFixed là giải pháp ngắn hơn thực hiện công việc của mình. – Mayhem

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