Nhấn 20 rồi % và màn hình hiển thị 0.2. Bây giờ nhấn 100, rồi +, rồi 10, rồi % — và máy tính không hiển thị 10.1. Nó hiển thị 110. Cùng một phím, kết quả hoàn toàn khác nhau. Phím phần trăm là một trong những nút nhạy cảm với ngữ cảnh nhất trên máy tính, và sự nhầm lẫn nó gây ra hoàn toàn có thể dự đoán được khi bạn hiểu hai chức năng mà nó đảm nhiệm.
Chức năng một: phần trăm độc lập
Khi % là phép toán duy nhất — không có phép cộng, trừ, nhân hay chia nào đứng trước trong biểu thức hiện tại — nó có nghĩa là một điều: chia cho 100. Gõ 20% và máy tính trả về 0.2. Gõ 75% và nó trả về 0.75. Đây là phiên bản mà hầu hết mọi người học đầu tiên, và nó là phiên bản có ý nghĩa toán học khi đứng riêng lẻ.
Trong mã nguồn của máy tính ở trên, trường hợp này được xử lý bằng cách thay thế bất kỳ number% nào xuất hiện ở đầu biểu thức (hoặc sau dấu ngoặc mở) bằng (number / 100). Kết quả của 20% do đó thực sự là 20 / 100 = 0.2. Ở đây không có sự mơ hồ.
Chức năng hai: phần trăm của tổng đang chạy
Đây là nơi hành vi làm nhiều người ngạc nhiên. Khi % xuất hiện ở cuối một biểu thức đã có phép toán (+, −, ×, hoặc ÷), máy tính làm điều khác: nó tính phần trăm của biểu thức con bên trái phép toán cuối cùng đó, rồi dùng kết quả đó làm giá trị thứ hai.
Hãy xem một ví dụ cụ thể. Nhập 100 + 10% và nhấn bằng:
- Máy tính nhận thấy
%kết thúc một biểu thức có phép toán trước đó. - Nó đánh giá phần bên trái của
+cuối cùng, là100. - Nó tính
10%của giá trị đó:100 × 10 / 100 = 10. - Nó thay thế kết quả đó, cho ra
100 + 10 = 110.
Đây là hành vi phần trăm của cơ sở, và chính xác là điều bạn cần cho các tác vụ hàng ngày như thêm thuế bán hàng hoặc áp dụng giảm giá. Để thêm 8% thuế cho món hàng 45 đô la, gõ 45 + 8% và nhấn bằng: kết quả là 48.6, không phải 45.08. Nếu không có hành vi này, bạn sẽ phải tính 8% của 45 riêng rồi mới cộng vào.

Tại sao hành vi thay đổi theo ngữ cảnh phép toán
Thiết kế này là có chủ ý, không phải sự cố. Như Raymond Chen giải thích trong bài viết được trích dẫn rộng rãi về Máy tính Windows, phím phần trăm được thiết kế cho người mua sắm hàng ngày, không phải kỹ sư. Mục tiêu là trả lời câu hỏi "X cộng Y phần trăm của X là bao nhiêu?" chỉ với một lần nhấn phím, mà người dùng không cần hiểu đại số phần trăm. Hình thức toán học có thể không rõ ràng; nhưng hình thức thực tế thì rất hữu ích ngay lập tức.
Logic tương tự áp dụng cho phép trừ. Gõ 200 − 15% và máy tính trả về 170 — nó tính 15% of 200 = 30, rồi trừ đi: 200 − 30 = 170. Đó là giảm giá 15% trên giá 200 đô la. Hầu hết mọi người dùng phím phần trăm trong ngữ cảnh đó đang tính giảm giá, không phải chỉ hỏi 0.15.
Xảy ra gì với các phép toán nối tiếp
Hành vi này mở rộng cho các biểu thức dài hơn. Xem xét 10 + 10 + 10%. Máy tính đánh giá phần trước phép toán cuối cùng: 10 + 10 = 20. Sau đó nó tính 10% của 20, là 2. Kết quả cuối cùng là 20 + 2 = 22.
Điều này được xác nhận trực tiếp trong mã nguồn của công cụ trên: bộ xử lý phần trăm dùng biểu thức chính quy tham lam để tìm mọi thứ đến phép toán cuối cùng, đánh giá biểu thức con đó đệ quy, rồi nhân với giá trị phần trăm chia cho 100. Phần trăm luôn được tính dựa trên tổng đang chạy tại điểm của phép toán cuối cùng đó.
Khi nào nên dùng phím % và khi nào nên gõ số thập phân
Phím phần trăm là một phím tắt với ý nghĩa cụ thể. Nó hoạt động tốt cho các tác vụ sau:
- Thêm thuế hoặc phí —
price + rate%tự động tính thuế trên giá. - Áp dụng giảm giá —
price − rate%trừ đi số tiền chính xác. - Tìm nhanh một phần của giá trị —
500 × 20%cho ra100(20% của 500).
Nó không phù hợp lắm cho các tác vụ sau:
- Chuyển phần trăm sang số thập phân khi đứng riêng —
20%cho ra0.2, điều này đúng, nhưng nếu bạn tiếp tục với phép toán thì ngữ cảnh sẽ thay đổi. - Biểu thức phức tạp mà "cơ sở" không phải biểu thức con bên trái — nếu số bạn muốn lấy phần trăm của không nằm ngay trước phép toán cuối cùng, phím tắt sẽ tính sai cơ sở. Trong trường hợp đó, hãy tính phần trăm riêng rồi cộng kết quả thủ công.
Thử ngay: nhập100 + 10%vào máy tính ở trên và nhấn bằng. Kết quả là 110 — không phải 100.1. Rồi nhập10%một mình: kết quả là 0.1. Cùng một phím, hai kết quả khác nhau, hoàn toàn phụ thuộc vào những gì đứng trước nó.