2010-09-12 35 views
6

Trong JavaScript nó có giá trị để chấm dứt một số nguyên số chữ với một dấu chấm, như vậy ...Tại sao một số nguyên theo sau là dấu chấm một chữ số hợp lệ trong JavaScript?

x = 5.; 

điểm của việc có ký hiệu này là gì? Có lý do nào để đặt dấu chấm ở cuối, và nếu không, tại sao ký hiệu đó được phép ở vị trí đầu tiên?

Cập nhật: Ok guys, kể từ khi bạn đề cập đến nổi và số nguyên ... Chúng tôi đang nói về JavaScript ở đây. Chỉ có một loại số trong JavaScript là IEEE-754.

55. có cùng giá trị, không có sự khác biệt giữa hai giá trị đó.

+0

Điều thú vị hơn đối với tôi là javascript cho phép '05' và' 5.' nhưng không cho phép '05.'. – user113716

+2

Thats bởi vì tiền tố '0' làm cho nó một số bát phân, làm thế nào bạn sẽ thể hiện một phao bát phân? ;) –

+0

@Ivo - Ah, quả thật vậy. '09.' không hoạt động. Cảm ơn! : o) – user113716

Trả lời

2

Bạn DO cần dấu thập phân nếu bạn gọi một phương thức trên một số nguyên:

5.toFixed(n) // throws an error 

5..toFixed(n) // returns the string '5.' followed by n zeroes 

Nếu điều đó không nhìn bên phải, (5).toFixed(n), hoặc 5.0.toFixed(n), sẽ làm việc, quá.

-1

Điều gì sẽ xảy ra nếu nó không phải là số nguyên, mà là một dấu phẩy động?

1

Đó là số dấu phẩy động. Không giống như bất kỳ ngôn ngữ nào khác mà tôi từng gặp phải, tất cả các số trong Javascript thực sự là số thực 64 bit. Về mặt kỹ thuật, không có số nguyên gốc trong Javascript. Xem The Complete Javascript Number Reference để biết câu chuyện đầy đủ xấu xí.

+0

Liệu người chăm sóc downvoter có nhận xét không? – Asaph

+0

Chắc chắn (xin lỗi tôi đã không nhận thấy trước đó): * Tôi không nghĩ rằng bạn đang trả lời câu hỏi của OP (nghĩa là phân tích cú pháp và ký hiệu, chứ không phải số lượng) * Số của Javascript được coi là đáng tin cậy. có nghĩa là bạn không cần coi chúng như những điểm nổi thông thường (nghĩa là bạn có thể làm 10.0/2 == 5, mà bạn không nên dùng với các dấu phẩy động thông thường) – Eric

2

Câu trả lời đúng trong trường hợp này là, nó hoàn toàn không có sự khác biệt.

Mọi số trong JavaScript đã là số dấu phẩy động 64 bit.

Các ". syntax" chỉ hữu ích trong trường hợp bạn có thể ommit phần cố định vì nó 0:

.2 // Will end up as 0.2 
-.5 // Will end up as -0.5 

Vì vậy, tổng thể nó chỉ tiết kiệm một byte, nhưng nó làm cho mã dễ đọc hơn cùng một lúc .

+0

Nó sẽ có nghĩa là các giá trị không nguyên (các giá trị có phân số thập phân) có dấu chấm (rõ ràng) và giá trị số nguyên không. do đó, hoặc là nó chỉ là một số nguyên như 5 hoặc nó là một số thực như 5.01 ... nhưng tại sao là 5. cho phép? Nếu dấu chấm trong trường hợp này không tạo ra sự khác biệt thì ký hiệu này là vô ích. Tại sao họ lại cho phép ký hiệu này? –

4

Tôi đoán nó chỉ là khả năng tương thích với các ngôn ngữ C-like khác mà dấu chấm không quan trọng.

+0

Tôi muốn gọi di sản đó ... Nhưng có, đó có thể là lý do. Tôi đoán, người tạo JavaScript chỉ sao chép ký hiệu từ C, nhưng sau đó quyết định xác định chỉ một loại số (và sau đó không nghĩ đến việc xem lại ký hiệu). –

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