Giả sử ô A1 của tôi trong bảng tính Excel giữ số 3 . Nếu tôi nhập công thức
= - A1^2 + A1
trong A2, sau đó A2 hiển thị số 12, khi nó hiển thị -6 (hoặc -9 + 3)
Tại sao vậy? Làm thế nào tôi có thể ngăn chặn hành vi sai lệch này?
Giả sử ô A1 của tôi trong bảng tính Excel giữ số 3 . Nếu tôi nhập công thức
= - A1^2 + A1
trong A2, sau đó A2 hiển thị số 12, khi nó hiển thị -6 (hoặc -9 + 3)
Tại sao vậy? Làm thế nào tôi có thể ngăn chặn hành vi sai lệch này?
Câu trả lời:
Câu trả lời ngắn
Để giải quyết vấn đề này, chỉ cần thêm 0 trước dấu bằng
= 0 - A1^2 + A1
hoặc thêm một vài dấu ngoặc đơn để buộc thứ tự hoạt động tiêu chuẩn
= - (A1^2) + A1
hoặc thay thế dấu trừ bằng cách giải thích nhân của nó bằng -1
= -1 * A1^2 + A1
Trong trường hợp cụ thể này, khi bạn có thêm thuật ngữ + A1, giải pháp tốt nhất là đề xuất của @ Lioness99a:
= A1 - A1^2
Giải thích chi tiết
Theo quy ước của Excel,
= - 3^2
bằng (-3) ^ 2 = 9, trong khi
= 0-3^2
bằng 0-9 = -9.
Tại sao chỉ thêm 0 thay đổi kết quả?
Không có trước một minuend, dấu trừ trong -3 ^ 2 được coi là toán tử phủ định , là toán tử đơn nguyên (chỉ có một đối số) thay đổi dấu của số (hoặc biểu thức) theo sau. Tuy nhiên, dấu trừ trong 0-3 ^ 2 là toán tử trừ , là toán tử nhị phân trừ đi những gì tiếp theo -
từ những gì đi trước -
. Theo quy ước của Excel, toán tử lũy thừa ^
được tính sau toán tử phủ định và trước toán tử trừ . Xem "Toán tử tính toán và quyền ưu tiên trong Excel" , phần "Thứ tự Excel thực hiện các thao tác trong công thức".
Quy ước toán học tiêu chuẩn là phép lũy thừa được tính toán trước cả phủ định và phép trừ hoặc, nói đơn giản hơn, ^
được tính toán trước -
. Đáng xấu hổ, Excel đã chọn các quy ước khác nhau từ các quy tắc đại số, sách giáo khoa, văn bản học thuật, máy tính khoa học, Lotus 1-2-3, Mathicala, Maple, các ngôn ngữ định hướng tính toán như Fortran hoặc Matlab, MS Works và ... VBA ( ngôn ngữ được sử dụng để viết macro của Excel). Thật không may, Calc từ LibreOffice và Google Sheets tuân theo cùng một quy ước về khả năng tương thích với Excel. Tuy nhiên, việc đặt một biểu thức trong hộp tìm kiếm hoặc thanh của Google cho kết quả tuyệt vời. Nếu bạn nhấn enter, thứ tự tính toán sẽ được cung cấp bằng cách sử dụng dấu ngoặc đơn. Một cuộc thảo luận trong đó một nhà toán học giết chết các lập luận của một "nhà khoa học máy tính" bảo vệ quyền ưu tiên của phủ định đối với phép lũy thừa: http://mathforum.org/l Library / drmath / view / 69058.html
Giải pháp chung
Nếu bạn muốn tính toán
- Anything ^ 2,
thêm 0 trước dấu bằng
0 - Anything ^ 2
hoặc thêm một vài dấu ngoặc đơn để buộc thứ tự hoạt động tiêu chuẩn
- ( Anything ^ 2 )
hoặc thay thế dấu trừ bằng cách giải thích nhân của nó bằng -1
-1 * Anything ^ 2
Trong số các lựa chọn thay thế ở trên, tôi thích thêm 0 trước dấu trừ vì nó là thực tế nhất. Nếu biểu thức đã được bao quanh bởi dấu ngoặc đơn, tôi tránh thêm dấu ngoặc đơn. Việc sử dụng nhiều dấu ngoặc đơn làm cho các biểu thức khó đọc, gỡ lỗi và viết hơn.
Nếu một thuật ngữ phụ được thêm vào (hoặc bị trừ mà không có vấn đề về năng lượng chẵn),
- Anything ^ 2 + ExtraTerm,
giải pháp tốt nhất là đặt ExtraTerm trước,
ExtraTerm - Anything ^ 2.
Một nhận xét cho câu trả lời khác nói rằng trường hợp duy nhất bạn phải biết về quy tắc ưu tiên không chuẩn là khi dấu trừ đi theo dấu bằng (= -). Tuy nhiên, có những ví dụ khác, như = exp (-x ^ 2) hoặc = (- 2 ^ 2 = 2 ^ 2), trong đó không có phần trừ trước dấu trừ.
Cảm ơn @BruceWayne đã đề xuất một câu trả lời ngắn, mà tôi đã viết ở đầu.
Bạn có thể quan tâm Theo Excel, 4 ^ 3 ^ 2 = (4 ^ 3) ^ 2. Đây thực sự là quy ước toán học tiêu chuẩn?
Một chút thành công hơn câu trả lời của Rodolfo, bạn có thể sử dụng:
=-(A1^2)+(A1)
(Chỉnh sửa: Tôi hoàn toàn không thấy đó là câu hỏi / câu trả lời tự.)
Một dẫn đầu -
được coi là một phần của nhiệm kỳ đầu tiên.
=-3^2
được xử lý như (-3)^2 = 9
Với số 0 khi bắt đầu, nó được coi là phép trừ thông thường.
=0-3^2
được xử lý như 0 - 3^2 = -9
Và nếu bạn có hai toán tử, điều tương tự sẽ xảy ra.
=0--3^2
được xử lý như 0 - (-3)^2 = -9
và
=0+-3^2
được xử lý như0 + (-3)^2 = 9
Bởi vì Excel đang diễn giải phương trình của bạn là:
(-x) ^ 2 + x
Khi bạn muốn:
- (x ^ 2) + x
Để ngăn chặn loại hành vi không mong muốn này, tôi thấy cách tốt nhất là sử dụng dấu ngoặc đơn để xác định hệ thống ưu tiên của riêng bạn, vì phủ định không giống như phép trừ và do đó không được PEMDAS bao phủ. Một ví dụ sẽ như sau:
(- (x ^ 2)) + x
Nó có thể là quá mức cần thiết, nhưng đây là cách tôi đảm bảo Excel hoạt động theo cách tôi muốn.
x - x^2
. Điều này đảm bảo - được hiểu là toán tử trừ nhị phân.
Biểu thức = - A1^2 + A1
là dành riêng cho Excel vì vậy phải tuân theo quy tắc Excels. Trái với một số câu trả lời khác ở đây, không có thứ tự ưu tiên chính xác . Chỉ có các quy ước khác nhau được thông qua bởi các ứng dụng khác nhau. Để bạn tham khảo, thứ tự ưu tiên được sử dụng bởi excel là:
: Range
<space> intersection
, union
- Negation
% Percentage
^ Exponential
* and / Multiplication and Division
+ and - Addition and Subtraction
& Concatenation
= < > <= >= <> Comparison
Mà bạn có thể ghi đè bằng dấu ngoặc đơn.
-
có thể là đơn nguyên hoặc nhị phân. Nhưng điều đó không bao hàm một trật tự hoạt động. Các ngôn ngữ khác có quyền này: trong Python, Ruby, Octave, Awk và Haskell (năm ngôn ngữ đầu tiên có toán tử lũy thừa xuất hiện trong tâm trí), -3 ** 2
luôn luôn đánh giá -9
. Tại sao? Bởi vì đó là câu trả lời đúng.
Bạn có thể có một trong hai cách:
=-A1^2+A1
sẽ trả về 12 , nhưng:
=0-A1^2+A1
sẽ trả lại -6
Nếu bạn cảm thấy việc trả lại 12 vi phạm lẽ thường; lưu ý rằng Google Sheets cũng làm điều tương tự.
=A1-A1^2
cũng trả về -6
Ngoài ra, bạn chỉ có thể làm
= A1 - A1^2
bởi vì -y + x = x-y
Những người khác đã trả lời "làm thế nào tôi có thể tránh điều này?" một phần của câu hỏi Tôi sẽ nói với bạn tại sao nó xảy ra.
Nó xảy ra bởi vì máy tính cá nhân vào năm 1979 có bộ nhớ và khả năng xử lý rất hạn chế.
VisiCalc được giới thiệu cho Apple II vào năm 1979, hai năm trước khi phát hành lần đầu tiên máy tính IBM (mà hầu hết các máy tính để bàn và máy tính xách tay hiện đại đều theo dõi tổ tiên trực tiếp của chúng). Apple II có thể có tới 64 KiB (65.536 byte) RAM và VisiCalc cần ít nhất 32 KiB để chạy. Nói một chút về vấn đề này, VisiCalc được coi là "ứng dụng sát thủ" cho Apple II và có lẽ thực sự cho các máy vi tính cá nhân nói chung.
Càng ít trường hợp đặc biệt và càng ít nhìn về phía trước công thức, thì đơn giản hơn (và do đó nhỏ hơn) mã để phân tích một công thức bảng tính có thể được thực hiện. Do đó, sẽ hợp lý khi yêu cầu người dùng phải rõ ràng hơn trong các trường hợp góc, để đổi lấy việc có thể xử lý các bảng tính lớn hơn. Hãy nhớ rằng, ngay cả với Apple II cao cấp, bạn chỉ có vài chục kilobyte để chơi sau khi bộ nhớ được yêu cầu bởi ứng dụng. Với hệ thống bộ nhớ thấp (RAM 48 KiB không phải là cấu hình không phổ biến đối với máy "nghiêm trọng"), giới hạn thậm chí còn thấp hơn.
Khi IBM giới thiệu PC của họ, một cổng VisiCalc cho kiến trúc mới đã được tạo ra. Wikipedia gọi cổng này là "tương thích với lỗi" , vì vậy bạn rất mong đợi được xem chính xác hành vi phân tích cú pháp công thức, ngay cả khi về mặt kỹ thuật hệ thống có khả năng phân tích cú pháp phức tạp hơn.
Bắt đầu từ năm 1982, Microsoft đã cạnh tranh với VisiCalc và sau đó là 1-2-3 với bảng tính đa nền tảng Multiplan của họ . Sau đó, Lotus 1-2-3 được giới thiệu vào năm 1983 dành riêng cho PC của IBM và nhanh chóng vượt qua VisiCalc trên nó. Để làm cho quá trình chuyển đổi dễ dàng hơn, cả hai đều phân tích các công thức theo cách tương tự như VisiCalc đã làm. Vì vậy, hành vi nhìn về phía trước hạn chế sẽ được tiến hành.
Năm 1985, Microsoft đã giới thiệu Excel , ban đầu cho Macintosh và bắt đầu với phiên bản 2 vào năm 1987 cho PC. Một lần nữa, để làm cho quá trình chuyển đổi dễ dàng hơn, thật có ý nghĩa để thực hiện hành vi phân tích công thức mà mọi người đã sử dụng từ bây giờ gần một thập kỷ.
Với mỗi lần nâng cấp Excel, cơ hội để thay đổi hành vi đã tồn tại, nhưng không chỉ yêu cầu người dùng học một cách mới để nhập công thức, nó cũng có nguy cơ phá vỡ tính tương thích với bảng tính được sử dụng hoặc tạo với phiên bản trước. Trong một thị trường vẫn rất cạnh tranh với một số công ty thương mại cạnh tranh với nhau trong từng lĩnh vực, quyết định có thể được đưa ra để giữ cho hành vi người dùng đã quen.
Chuyển nhanh đến năm 2019 và chúng tôi vẫn bị mắc kẹt với các quyết định phân tích hành vi phân tích công thức ban đầu được thực hiện không muộn hơn 1978-1979.
Biểu thức - A1^2
chứa hai toán tử, là toán tử phủ định đơn nguyên và toán tử -
lũy thừa nhị phân ^
. Với sự vắng mặt của bất kỳ dấu ngoặc đơn nào, có thể có hai cách hiểu. Hoặc:
-(A1^2)
hoặc là:
(-A1)^2
Người đầu tiên nói đầu tiên làm lũy thừa với toán hạng A1
và 2
, và sau đó làm sự phủ định về điều đó.
Người thứ hai nói đầu tiên thực hiện phủ định trên toán hạng A1
, và sau đó sử dụng lũy thừa trên kết quả của điều đó và 2
.
Như đã nói trong các bình luận cho câu hỏi, Quyền hạn có mức độ ưu tiên cao hơn dấu trừ trong bất kỳ môi trường lành mạnh nào. Điều đó có nghĩa là, tốt nhất là nếu một hệ thống giả định cái đầu tiên.
Tuy nhiên, Excel thích cái thứ hai hơn.
Bài học là, nếu bạn không chắc chắn môi trường của mình có lành mạnh hay không, hãy bao gồm dấu ngoặc đơn để ở bên an toàn. Vì vậy, viết -(A1^2)
.
Đây không phải là một vấn đề với excel nhưng với số mũ và tiêu cực. Khi bạn lấy một số và nâng nó lên một mức chẵn, bạn hủy bỏ dấu âm.
-x^2 + x == (-x * -x) + x
x = 3 => (-3 * -3) + 3
== 9 + 3 => 12
Bạn cần sử dụng dấu ngoặc đơn và nhiều bằng -1
-1 * (x^2) + x
-x^2
x là 3 và x^2
x là -3. -x^2+x
sẽ không bao giờ đạt đến 12: wolframalpha.com/input/?i=-x%5E2%2Bx
-x ^ 2 + x trong đó x = 3 Đây là một ví dụ về phương trình bậc hai Phương trình có thể được viết như sau: -3 * -3 + 3: Phép nhân được ưu tiên hơn phép cộng nên kết quả sẽ được viết như sau: 9 + 3 : Why = 9 vì số âm xa số âm cho kết quả dương. Điều này có thể được xác minh bằng bất kỳ máy tính, quy tắc trượt hoặc bất kỳ chương trình toán học máy tính nào Kết quả cuối cùng 9 + 3 = 12
Nó chỉ là một phép toán thực sự đơn giản.
Quy tắc 1. Ngay cả phép nhân số âm, sẽ cho kết quả dương:
trừ * trừ = cộng
trừ * trừ * trừ = trừ
trừ * trừ * trừ * trừ = cộng
Điều này là do thực tế, rằng các minuses hủy bỏ nhau theo cặp.
Quy tắc 2. Sức mạnh của mỗi số xác định rằng số này sẽ được nhân với chính nó một số lần.
(2) ^ n, trong đó n = 2 => 2 * 2 = 4
(-2) ^ n, trong đó n = 2 => (-2) * (- 2) = 4
Và nếu bạn có thể thấy Quy tắc số 1 ..
(-3) ^ n, trong đó n = 3 => (-3) * (-3) * (-3) = 9 * (-3) = -27
Quy tắc 3. Nhân và chia có mức độ ưu tiên cao hơn so với phép cộng và phép trừ.
3 * 5 + 2 = 15 + 2 = 17
3 * (5 + 2) = 3 * 7 = 21
Và có câu trả lời cho câu hỏi của bạn:
Kết hợp cả 3 quy tắc từ trước:
-x ^ 2 + x, trong đó x = 3 => -3 ^ 2 + 3 = 9 + 3 = 12
Lời khuyên của tôi cho bạn là dành một chút thời gian mỗi năm và tiếp tục làm mới các quy tắc cơ bản của toán học.
Trên thực tế, đây là một kỹ năng bạn có thể duy trì và đứng đầu trên một phần lớn của thế giới, chỉ bằng cách biết các phép toán cơ bản.
+-*/
, nhưng không áp dụng các toán tử đơn nguyên như -
hoặc +
. Ưu tiên của toán tử công suất cao hơn *
và /
nhưng các toán tử đơn nguyên thậm chí còn có độ ưu tiên cao hơn