Chia cho 0 javascript

Nếu bạn thấy thông báo này, điều đó có nghĩa là chúng tôi đang gặp sự cố khi tải các tài nguyên bên ngoài trên trang web của mình

Nếu bạn đang sử dụng bộ lọc web, vui lòng đảm bảo rằng các miền *. kastatic. tổ chức và *. kasandbox. org được bỏ chặn

Tôi đã mong đợi một lỗi nhưng nhận được giá trị Infinity. Hãy khám phá điều này để xem liệu chúng ta có thể tìm ra lý do tại sao

Khám phá

Đầu tiên, tôi vào MDN để xem đó có phải là kết quả mong đợi không

2.0 / 0     // Infinity

2.0 / 0.0   // Infinity, because 0.0 === 0

2.0 / -0.0  // -Infinity

Nó có vẻ là câu trả lời mong đợi, nhưng tôi nhận thấy một cái gì đó. Chia cho số 0 âm dẫn đến Vô cực âm. Không chắc điều đó có nghĩa là gì, tôi quyết định kiểm tra ECMAScript

GHI CHÚ. ECMAScript là đặc tả chính thức của JavaScript

Theo

Kết quả được xác định bởi đặc điểm kỹ thuật số học IEEE 754-2019

...

Phép chia một giá trị hữu hạn khác không cho một số 0 dẫn đến một vô hạn có dấu. Dấu hiệu được xác định theo quy tắc đã nêu ở trên

Thật không may, tôi không có quyền truy cập vào tài liệu của IEEE. Vậy là hành trình của tôi kết thúc tại đây. Tuy nhiên, đây là một số ghi chú bài giảng, xem trang 10 tôi đã tìm thấy về chủ đề này

Giải pháp

Lúc đầu, tôi đã thử một giải pháp try/catch

var [numerator, denominator] = num.split('/');
try {
    // The plus converts a string to a number
    result = +(numerator) / +(denominator);
} catch(e) {
    throw new RangeError('Cannot divide by zero');
}
// Infinity

Như mong đợi, chúng tôi nhận được Infinity. Tìm kiếm trên MDN, tôi đã tìm thấy một phương pháp hữu ích [isFinite]. (https. // nhà phát triển. mozilla. org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite)

Hàm isFinite() toàn cầu xác định xem giá trị được truyền có phải là một số hữu hạn hay không. Nếu cần, tham số đầu tiên được chuyển đổi thành một số

Tôi đã sử dụng nó để đưa ra giải pháp cuối cùng của mình

if (isFinite(result)) {
  return result;    
}
return 'Cannot divide by zero';

Tất nhiên, người dùng có thể nhập Infinity/Infinity nhưng chúng tôi sẽ để dành điều đó vào lúc khác

Suy nghĩ cuối cùng

Điều thú vị là một lỗi sẽ không xảy ra khi chia cho 0. Theo đặc điểm kỹ thuật của IEEE mà ECMAScript triển khai, nó tuân theo các quy tắc. Một cái gì đó để tìm cho ra trên hành trình viết mã của bạn. Kết quả bạn mong đợi có thể không quá rõ ràng

Số chia của một phép chia hoặc toán tử còn lại là 0n. Trong số học Number, điều này tạo ra Infinity, nhưng không có "giá trị vô hạn" trong BigInts, do đó, một lỗi đã xảy ra. Kiểm tra xem số chia có phải là 0n trước khi thực hiện phép chia

const a = 1n;
const b = 0n;
const quotient = a / b;
// RangeError: BigInt division by zero

Thay vào đó, trước tiên hãy kiểm tra xem số chia có phải là 0n hay không và đưa ra lỗi với thông báo tốt hơn hoặc chuyển về một giá trị khác, chẳng hạn như Infinity hoặc

const a = 1n;
const b = 0n;
const quotient = a / b;
// RangeError: BigInt division by zero
2

Toán tử chia (/) tạo ra thương của các toán hạng của nó trong đó toán hạng bên trái là số bị chia và toán hạng bên phải là số chia

x / y

1 / 2; // 0.5

Math.floor(3 / 2); // 1

1.0 / 2.0; // 0.5

2.0 / 0; // Infinity

2.0 / 0.0; // Infinity, because 0.0 === 0

2.0 / -0.0; // -Infinity

Sự chỉ rõ

Bảng BCD chỉ tải trong trình duyệt có bật JavaScript. Bật JavaScript để xem dữ liệu

  • Toán tử cộng
  • Toán tử trừ
  • toán tử nhân
  • Toán tử phần dư
  • Toán tử lũy thừa
  • toán tử gia tăng
  • Toán tử giảm dần
  • Toán tử phủ định một ngôi
  • Toán tử cộng một ngôi

Tìm thấy một vấn đề với trang này?

  • Chỉnh sửa trên GitHub
  • Nguồn trên GitHub
  • Báo cáo sự cố với nội dung này trên GitHub
  • Bạn muốn tự khắc phục sự cố?

Sửa đổi lần cuối. Ngày 13 tháng 12 năm 2022, bởi những người đóng góp MDN

Làm cách nào để xử lý chia cho 0 trong js?

Đầu ra của mã trong JavaScript như sau. .
Chia số 0 cho 0 trả về NaN
Chia số dương cho 0 trả về Infinity
Chia số âm cho 0 trả về -Infinity

Bạn có thể chia một cái gì đó cho 0?

Những ghi chú này giải thích lý do tại sao chúng ta không thể chia hết cho 0 . Câu trả lời ngắn gọn là 0 không có nghịch đảo cấp số nhân và bất kỳ nỗ lực nào nhằm xác định một số thực là nghịch đảo cấp số nhân của 0 sẽ dẫn đến mâu thuẫn 0 = 1.

Điều gì xảy ra nếu bạn chia cho số không?

Chỉ cần nói rằng nó bằng "không xác định. " Tóm lại với tất cả những điều này, chúng ta có thể nói rằng không trên 1 bằng không . Chúng ta có thể nói rằng 0 trên 0 bằng "không xác định. " Và tất nhiên, cuối cùng nhưng không kém phần quan trọng, mà chúng ta rất nhiều lần phải đối mặt, là 1 chia cho 0, vẫn chưa được xác định.