2016-02-15 28 views
5

Tôi đã cố gắng ra một số học đơn giản trên giao diện điều khiển, nơi tôi đã cố gắng để nhân lên 0 với -1. Điều thú vị là, tôi nhận được một -0 là câu trả lời, thay vì 0.Javascript trả -0

Ảnh chụp màn hình:

enter image description here

bất cứ ai có thể giải thích những kết quả này?

+0

Đâu là mã? – Rayon

+1

Tôi tin rằng anh ấy đã thử trên bảng điều khiển dành cho nhà phát triển –

+0

Không có mã .. Đã xảy ra khi đang thử trong bảng điều khiển. –

Trả lời

1

javascript sử dụng IEEE 754 như đã đề cập ở trên và cũng có,

Các tiêu chuẩn IEEE 754 cho dấu chấm động số học (hiện nay được sử dụng bởi hầu hết máy tính và các ngôn ngữ lập trình có hỗ trợ floating point số) đòi hỏi cả hai +0 và −0. Số học thực với các số 0 đã ký có thể được coi là một biến thể của dòng số thực mở rộng sao cho 1/−0 = −∞ và 1/+ 0 = + ∞; sự phân chia chỉ là không xác định cho ± 0/± 0 và ± ∞/± ∞.

Không được phép ký hiệu phân tích toán học số tiếp cận 0 từ bên dưới dưới dạng giới hạn một chiều, có thể được biểu thị bằng x → 0−, x → 0− hoặc x → ↑ 0. Ký hiệu "−0" có thể được sử dụng không chính thức cho biểu thị một số âm nhỏ đã được làm tròn thành 0. Khái niệm của zero tiêu cực cũng có một số ứng dụng lý thuyết trong cơ học thống kê và các ngành khác.

Người ta cho rằng sự bao gồm của ký zero trong IEEE 754 làm cho nó dễ dàng hơn để đạt được độ chính xác số trong một số vấn đề quan trọng (http://people.freebsd.org/~das/kahan86branch.pdf), đặc biệt là khi tính toán với các chức năng cơ bản phức tạp.

http://www.johndcook.com/blog/2010/06/15/why-computers-have-signed-zero/

2

JavaScript đang sử dụng IEEE-754, có cả số 0 dương và âm.

+0

Thú vị .. nơi nào chúng ta tìm thấy việc sử dụng cho số không âm? –

+0

Tôi tin rằng không có sử dụng quan trọng - nó chỉ là một tác dụng phụ của mã hóa được sử dụng. – yihangho

+1

như đã nêu [ở đây] (http://stackoverflow.com/a/27074403/704944), một trong những lý do có thể là như vậy divison bằng không có thể phân biệt giữa -∞ và + ∞ – jeremy

5

Under the IEEE standard.

Ký hiệu bằng không bằng dấu có liên quan. Trong số học thông thường, −0 = +0 = 0. Tuy nhiên, trong tính toán, một số biểu diễn số cho phép cho sự tồn tại của hai số không, thường được biểu thị bằng −0 (số 0 âm) và +0 (số không dương). Điều này xảy ra ở một số chữ ký số biểu diễn cho số nguyên và trong hầu hết các số dấu phẩy động . Số 0 thường được mã hóa là +0, nhưng có thể là được biểu thị bằng dấu +0 hoặc −0.

+0

Oh .. nhưng nó chỉ là cách nó được? Hay chúng ta có thể thua -0? –

+0

Phần của tiêu chuẩn để so sánh x === y .. xem tại đây: http://ecma262-5.com/ELS5_HTML.htm#Section_11.9.6 – Fergus

0

JavaScript sử dụng IEEE 754 hệ thống số dấu chấm động chuẩn. Hệ thống này có cả hai positive and negative zeros mặc dù chúng đều bình đẳng khi so sánh. Nó cũng có các giá trị vô cùng dương và âm và các giá trị "không phải là số".