Tính biểu thức toán API
Tính biểu thức toán an toàn: đơn vị (5 cm to inch), ma trận, thống kê, biến, số lớn hoặc phân số chính xác, kèm kết quả định dạng sẵn và LaTeX.
Gửi biểu thức trong expr (GET hoặc POST) hoặc một loạt trong expressions (tối đa 100, dùng chung biến: a = 5 rồi a * 2). Bộ tính là mathjs với tập hàm giới hạn: số học, luỹ thừa và căn, logarit, làm tròn, lượng giác, ước chung / bội chung, giai thừa và tổ hợp, thống kê (mean, median, std, variance, quantile…), ma trận (det, inv, transpose, dot, cross), so sánh và logic, số phức, hằng số và đơn vị có quy đổi (100 km/h to m/s, 5 cm + 2 inch to mm, 10 kg * 9.81 m/s^2 to N). Có thể định nghĩa hàm (f(x) = x^2 + 1) và truyền biến qua scope (số, mảng hoặc chuỗi như "42 km").
number=bignumber tính với 64 chữ số có nghĩa (precision từ 16 đến 256), number=fraction cho phân số chính xác (1/3 + 1/6 → 1/2). Mỗi kết quả gồm chuỗi đã định dạng (digits chữ số có nghĩa, mặc định 15), value dạng JSON, type và mã LaTeX của biểu thức để hiển thị.
An toàn: đã tắt import, createUnit, evaluate, parse, simplify, derivative và các hàm meta khác, mathjs chặn truy cập thuộc tính constructor, biểu thức tối đa 2.000 ký tự, ma trận và dãy tối đa 100.000 phần tử, giai thừa tối đa 100.000, luỹ thừa chính xác tối đa số mũ 10.000; một loạt biểu thức dừng sau 2 giây.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
expr | query|body | string | không | Một biểu thức (tối đa 2.000 ký tự). | |
expressions | body | array | không | Loạt biểu thức tính theo thứ tự, dùng chung biến (tối đa 100). | |
scope | body | object | không | Biến: {"price": 120000, "d": "42 km"}. | |
number | query|body | string | không | number | number (số thực), bignumber hoặc fraction. |
precision | query|body | number | không | 64 | Số chữ số có nghĩa ở chế độ bignumber (16–256). |
digits | query|body | number | không | 15 | Số chữ số có nghĩa của kết quả định dạng. |
Ví dụ
curl "https://apibox.io.vn/v1/math-eval?expr=5%20cm%20%2B%202%20inch%20to%20mm" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/math-eval?expr=5%20cm%20%2B%202%20inch%20to%20mm', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/math-eval?expr=5%20cm%20%2B%202%20inch%20to%20mm",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/math-eval?expr=5%20cm%20%2B%202%20inch%20to%20mm');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"expression": "5 cm + 2 inch to mm",
"result": "100.8 mm",
"value": {
"value": 100.8,
"unit": "mm"
},
"type": "Unit",
"tex": "5~\\mathrm{cm}+2~\\mathrm{inch}\\rightarrow\\mathrm{mm}",
"number": "number",
"ms": 6
}
Ứng dụng
- Cho người dùng nhập công thức tính giá, chiết khấu trong ứng dụng
- Đổi đơn vị trong chatbot hoặc khi nhập dữ liệu
- Tính phân số chính xác hoặc kết quả 64 chữ số
- Hiển thị công thức dạng LaTeX cạnh kết quả
Hỏi đáp
Vì sao 0.1 + 0.2 hiện 0.3?
Kết quả định dạng dùng 15 chữ số có nghĩa; value giữ số thực gốc (0.30000000000000004). Dùng number=bignumber để tính thập phân chính xác.
Biểu thức có chạy được mã độc không?
Không: chỉ có hàm toán học, các hàm meta như import hay evaluate đã bị tắt và không truy cập được thuộc tính JavaScript.
Hỗ trợ những đơn vị nào?
Mọi đơn vị có sẵn của mathjs: độ dài, khối lượng, thời gian, tốc độ, diện tích, thể tích, nhiệt độ, lực, năng lượng, công suất, áp suất, dữ liệu (bit, byte) và tiền tố SI. Không có tiền tệ.
API liên quan
Tạo UUID
Sinh tối đa 1.000 UUID v4, UUID v7 theo thời gian, ULID, Nano ID hoặc mã hex ngẫu nhiên mỗi request. Ngẫu nhiên an toàn, hỗ trợ chữ in hoa.
⏱Phân tích biểu thức cron
Kiểm tra biểu thức cron và xem các lần chạy tiếp theo theo múi giờ bất kỳ, kèm mô tả dễ hiểu. Hỗ trợ cú pháp cron 5, 6 và 7 trường.
🕒Giờ & múi giờ
Lấy giờ hiện tại ở mọi múi giờ, đổi giữa các múi giờ và Unix timestamp (giây hoặc mili giây), kèm độ lệch UTC và thứ trong tuần cho tối đa 30 múi giờ.