Trợ giúp:Tính toán

Trong Wikipedia và các dự án của Wikimedia, có thể thực hiện một số phép tính đơn giản sử dụng mã  
#tênhàm: tham số 1 | tham số 2 | tham số 3 ... 
Hiện tại các hàm sau đang hoạt động: #expr, #if, #ifeq, #iferror, #ifexist, #ifexpr, #rand, #rel2abs, #switch, #titleparts. Các phép tính được thực hiện bởi máy chủ (server) chạy Wikimedia.
Cảnh báo: Phần mở rộng này chỉ đang được thử nghiệm. Người phát triển phần mềm đã bật tính năng này lên có thể tắt nó bất cứ lúc nào, cho nên bạn cần phải theo dõi các trang và tiêu bản có sử dụng cú pháp này phòng trường hợp nó bị tắt, để các trang không bị đổ vỡ. Xin hãy xếp các tiêu bản dùng những hàm này vào :Thể loại:Bản mẫu dùng ParserFunctions.

**#expr**
Hàm này định giá trị của một biểu thức toán học và trả về giá trị đã tính được.

Các toán tử hợp lệ được liệt kê ở bên phải theo trật tự quyền ưu tiên. Xem thông tin chi tiết về hàm số của mỗi toán tử tại. Độ chính xác và định dạng của kết quả trả về sẽ thay đổi tùy thuộc vào hệ điều hành của máy chủ (server) chạy wiki, và tùy thuộc vào định dạng số trên ngôn ngữ trang.
Khi định giá sử dụng đại số boolean, 0 tương ứng với false còn bất kì giá trị khác 0 nào khác, cả âm và dương đều tương ứng với true:
 → 
 → 
Một biểu thức nhập rỗng sẽ trả về một chuỗi rỗng. Biểu thức không hợp lệ sẽ trả về một trong những thông báo lỗi, có thể bắt các lỗi này bằng cách dùng hàm #iferror:
 →  
 → 
 → 
Xem  bugzilla 6356.
Ví dụ:

cho:

phép tính này cho biết 100°F tương đương với bao nhiêu °C, làm tròn đến số nguyên.

**Các toán tử**
Sai:
exp

So sánh:
ln
Logarit tự nhiên
Từ đây có thể tính log(2):
abs

trunc

floor

ceil

sin

Góc tính bằng độ, ví dụ 30°:
cos

tan

asin

acos

atan

+
Dấu +(dương), phép toán một ngôi 
-
Dấu - (âm), phép toán một ngôi
not
phép toán một ngôi NOT, phép logic NOT (phép phủ định)
^
Lũy thừa

Phép nhân
/
Phép chia div
div
Phép chia, giống như /,không phải phép chia số nguyên
mod
"Modulo",phần dư của phép chia sau khi làm tròn (truncate) cả hai toán hạng thành số nguyên (toán tử PHP    %).Cảnh báo rằng, div và mod khác với các ngôn ngữ lập trình. Lỗi này đã được vá (nhưng vẫn nên cẩn trọng), xem bugzilla:6068. 
+
Phép cộng
-
Phép trừ
round
Làm tròn số ở bên trái theo số mũ của 1/10 được cho ở bên phải (hàm PHP  round)
**
Bằng (số và logic)

Khác  (!=)

**
Khác, giống như , phép logic xor

Lớn hơn
**
Lớn hơn hoặc bằng
and
Phép logic VÀ
or
Phép logic HOẶC

**#if**
 chuỗi kiểm tra | giá trị nếu đúng | giá trị nếu sai 
Hàm này kiểm tra tham số thứ nhất có tồn tại (không rỗng) hay không. Hàm sẽ cho kết quả sai nếu như chuỗi kiểm tra rỗng hoặc chỉ chứa các kí tự trắng (như phím cách (khi nhấn phím SpaceBar), kí tự xuống dòng (khi nhấn phim Enter, v.v.).
 →  no
 →  no
 →  no
 → 
Chuỗi kiểm tra được hiểu là văn bản (chuỗi kí tự) thuần túy, vì thế biểu thức toán học không được tính:
 →  no
 →  no 
Một trong hai hoặc cả hai giá trị trả về có thể được bỏ qua:
 →   yes 
 →   yes 
 →   no

**#ifeq**
Hàm này so sánh hai chuỗi và xác định xem chúng có đồng nhất hay không.
 chuỗi 1  chuỗi 2  giá trị nếu đồng nhất  giá trị nếu khác nhau 
Nếu cả hai chuỗi là các giá trị số hợp lệ, chúng sẽ được so sánh về số (toán học):
 →  no
 →  no
Còn nếu như so sánh văn bản, thì việc so sánh này có tính tới sự khác nhau giữa chữ viết hoa, viết thường:
 →  no
 →  no
 →  no

**#iferror**
  | lỗi | thành công  cho ra lỗi nếu biểu thức gặp lỗi, tức là biểu thức bao gồm , do #expr, #ifexpr, #time, #rel2abs, v.v. Hàm này có ích trong việc bắt gặp chuỗi sai được cho vào. Chẳng hạn:- cho ra - cho ra 
Không bắt buộc phải định hai tham số cuối cùng. Nếu tham số thành công không được định, kết quả của biểu thức được cho ra khi thành công. Nếu tham số lỗi cũng không được định, và nếu mã này gặp lỗi, thông báo lỗi không được cho ra, còn nếu không gặp lỗi, kết quả của biểu thức được cho ra.- cho ra - cho ra - cho ra - cho ra 
Nên:
*mã nguồn|mã dự phòng có nghĩa "cho ra kết quả của mã nguồn nếu đúng, hay không thì cho ra kết quả của mã dự phòng".- tiêu đề trang | giá trị nếu tồn tại | giá trị nếu không tồn tại 
Hàm sẽ định giá trị là true nếu như trang đó tồn tại, dù chúng có nội dung, là trang trắng rõ ràng (chứa dữ liệu meta như các đường liên kết thể loại hoặc Trợ giúp:Magic words, nhưng nội dung không nhìn thấy được), hoặc là trống như trang đổi hướng. Chỉ đối với những trang liên kết đỏ hàm mới trả về giá trị false, bao gồm cả những trang đã từng tồn tại những hiện tại đã bị xóa.  
 → 
 → 
Hàm sẽ định giá trị true cho các  tin nhắn hệ thống được tùy chỉnh hóa, và cho các  trang đặc biệt được xác định bằng phần mềm.  
 →  không tồn tại 
 → 
 → 
#ifexist: được coi là một "hàm phân tích đắt giá", chỉ một số lượng giới hạn hàm này được chèn vào một trang bất kì nào đó (bao gồm cả những hàm bên trong các bản mẫu đã được chèn vào). Khi vượt quá giới hạn này, trang sẽ được xếp vào thể loại :Thể loại:, và bất cứ hàm #ifexist: sau đó đều sẽ tự động trả về giá trị false, dù trang mục tiêu có tồn tại hay không.
Nếu một trang kiểm tra mục tiêu sử dụng #ifexist:, thì trang đó sẽ xuất hiện trong danh sách   dành cho trang mục tiêu.  Vì vậy nếu mã  được chèn trực tiếp vào trang (), /Foo sẽ liệt kê .
Trên những wiki sử dụng kho phương tiện chia sẻ, #ifexist: có thể được dùng để kiểm tra một tập tin đã được tải lên kho nhưng chưa lên wiki đó:  → 
 Image:Example.png  →  không tồn tại 
 → 
Nếu một trang miêu tả nôi bộ được tạo ra dành cho một tập tin, thì kết quả sẽ là tồn tại cho tất cả các mục kể trên.

**#ifexpr**
Mã ifexpr khi bạn muốn có điều kiện là 0 tương ứng với sai và 1 tương ứng với đúng; thay vì dùng điều kiện chuỗi rỗng tương ứng với sai và không rỗng tương ứng với #if như trên
 #ifexpr:  |  |  
Ví dụ:

cho ra
 3 ≤ 1 

**#rand**
Lưu ý: Hàm này đã bị tắt và không còn hoạt động.
Hàm rand cho ra một số ngẫu nhiên đều trong dải được quy định bởi biến.
#rand:  |  

**#rel2abs**


**#switch**
Hàm này so sánh một giá trị đầu vào với nhiều giá trị kiểm tra khác nhau, và trả về chuỗi kèm theo giá trị kiểm tra tương ứng nếu như một giá trị trùng khớp được tìm thấy.

kết quả mặc định được trả về nếu như không có chuỗi kiểm tra nào trùng khớp với chuỗi được so sánh:
→  Bar 
Trong cú pháp này, kết quả mặc định phải là tham số sau cùng và không chứa dấu bằng. Ngoài ra, kết quả mặc định có thể được khai báo một cách rõ ràng bằng một chuỗi kiểm tra là "#default".

Những kết quả mặc định đã khai báo theo cách này có thể được đặt vào bất cứ đâu trong hàm.
 →  baz = Baz 
 →  baz = Baz 
Các chuỗi kiểm tra có thể bị lướt qua (fall through), khi chúng ' trả về cùng một chuỗi kết quả. Điều này làm giảm bớt số lầṇ lặp. 

Ở đây tất cả các chuỗi kiểm tra 2, 3, và 4 đều trả về kết quả2; hai chuỗi kiểm tra 6, 7 đều trả về  kết quả4
Cũng như với hàm #ifeq, việc so sánh số được thực hiện nếu như chuỗi được so sánh và chuỗi kiểm tra đều là các số, và nếu như là văn bản thì so sánh tính đến sự khác biệt chữ hoa và chữ thường. Chuỗi kiểm tra có thể rỗng:
 →  Something 
Một khi đã tìm thấy một sự trùng khớp, những chuỗi kiểm tra sau nó bị lờ đi:
 →  
Cảnh báo: Các "chuỗi kiểm tra" không được chứa các dấu bằng. Để làm việc này, chúng ta sẽ tạo một bản mẫu ở , trong bản mẫu này chỉ có duy nhất một dấu =. Sau đó, ta dùng bản mẫu vừa tạo như sau:
 → 
Chú ý: Kiểm tra   Template:NBA color để biết ví dụ thực tế ứng dụng hàm này. Một ví dụ phức tạp có thể tìm thấy ở  Template:Extension.
Nếu kết quả mặc định có dấu = thì phải bỏ #default: đằng trước kết quả đó.
Ví dụ:
 cho  No 

 cho  No 

**#time**
Hàm #time để định dạng ngày tháng. Cú pháp hoặc:
#time: định dạng | giờ 
Các mã mở rộng không có trong cú pháp PHP:

**Thí dụ**
 cho ra -14 days (14 ngày trước đây).- cho ra +6 hours (6 giờ trễ đối với UTC)

**#titleparts**
#titleparts:| cho ra số đoạn đoạn của tên trang, chia nhau bằng dấu gạch chéo, bắt đầu từ cấp cao nhất:- cho ra 0 (tên trang đầy đủ)- cho ra 1- cho ra 2- cho ra 3- cho ra 4
#titleparts:|| cho ra số đoạn đoạn của tên trang, chia nhau bằng dấu gạch chéo, bắt đầu từ đoạn thứ số của đoạn đầu:- cho ra 2 (hai đoạn, bắt đầu từ đoạn thứ hai)
Tương tự:- cho ra 2- cho ra 3

**Sử dụng kết hợp**
Các hàm có thể được sử dụng kết hợp với nhau trong mã. Cách dùng này hữu ích khi chuỗi cho vào các hàm là kết quả tính toán bởi hàm khác.
Ví dụ mã sau không cho ra kết quả mong muốn:

do "(1+9)=10", trong điều kiện, được hiểu là một chuỗi chứ không được tự động tính ra kết quả đúng. Thay vào đó chúng ta cần dùng mã kết hợp:

Các chuỗi cũng có thể là kết quả của các tiêu bản hay biến hệ thống. Ví dụ:


**Tính một lần**
Chúng ta có thể cho hàm tính một lần và cho ra kết quả lưu trong mã nguồn của bài viết bằng cách dùng "subst" giống như với tiêu bản.
Ví dụ mã:

Cho ra:
4
Và kết quả 4 cũng là kết quả lưu trong mã nguồn của trang này.

**Dấu thập phân**
Lưu ý là phần mở rộng này hiện chỉ có dấu thập phân kiểu Mỹ: dấu phẩy dùng để phân tách phần ngàn, còn dấu chấm dùng để phân tách phần thập phân, tức là  sẽ trở thành 3.14285714286, chứ không 3,14285714286. Có thể sử dụng prettynum để đổi dấu chấm thành dấu phẩy.

**Tham khảo**

**Xem thêm**
Trợ giúp:Toán học
*Tài liệu về ParserFunctions tại Meta

**Liên kết ngoài**
  Cuộc thảo luận về ParserFunctions trên danh sách thư wikitech-l-  ParserFunctions trial-  Expr.php-  ParserFunctions.php-  ParserFunctions in MediaWiki SVN- meta:Help:ParserFunctions
Thể loại:Công cụ Wikipedia
Thể loại:Toán học
Thể loại:Dự án phát triển Wikipedia tiếng Việt