Trong lập trình, số ma có thể được hiểu là:
Số ma có thể đề cập đến các giá trị cụ thể được mã hóa cố định trong mã chương trình (chẳng hạn như "10", "123" và các giá trị khác được viết trực tiếp bằng số). Ví dụ: 1,05 là một số ma điển hình trong đoạn mã sau để tính giá sau thuế:
price_tax = 1.05 * price
Đôi khi người sáng tạo ra chuơng trình có thể hiểu ý nghĩa của giá trị khi họ viết nó, nhưng đối với các lập trình viên khác, ngay cả bản thân tác giả, sau một thời gian, cũng sẽ cảm thấy khó hiểu mục đích của giá trị này, vì vậy nhiều khi họ cảm thấy thật buồn cười và đùa rằng “Mặc dù không hiểu ý nghĩa của giá trị này. nhưng ít nhất chương trình có thể chạy, nó thực sự là một con số ảo ma” (nguồn gốc đề cập đến thuật toán tốc độ đối ứng căn bậc hai).
Các tác dụng không mong đợi phổ biến của số ma bao gồm:
Do đó, người ta thường tin rằng một hằng số có tên có ý nghĩa nên được thay thế số ma.Ví dụ, ví dụ trên có thể được thay đổi thành:
TAX = 0.05 price_tax = (1.0 + TAX) * price
Thông tin khác được biểu thị dưới dạng số trong máy tính cũng có thể là số ma , chẳng hạn như màu ở định dạng RGB được biểu thị dưới dạng số thập lục phân:
setColor("text", 0xffffff)
Khi đọc mã này, thật khó để hiểu ngay rằng 0xffffff đại diện cho màu trắng. Chương trình có thể rõ ràng hơn nếu bạn sử dụng các hằng số được đặt tên rõ ràng:
WHITE = 0xffffff setColor("text", WHITE)
Số ma cũng có thể đề cập đến các giá trị không phải là số khác, chẳng hạn như ký tự, chuỗi, v.v.
Tuy nhiên, không phải tất cả các số cụ thể không tên đều là số ma. Miễn là con số có ý nghĩa rõ ràng và ít có khả năng cần phải thay đổi, thì nó không được coi là một con số ma. Các ví dụ phổ biến bao gồm:
Ngoài ra số ma cũng được sử dụng trong việc lưu trữ. Thêm các giá trị cố định và chuỗi cố định trong một định dạng tệp cụ thể, rồi xác định định dạng tệp bằng cách kiểm tra xem tệp có chứa các dữ liệu này hay không.
Ví dụ: phần đầu của tệp GIF sẽ chứa hai chuỗi: GIF89a (47 49 46 38 39 61) hoặc GIF87a (47 49 46 38 37 61).