Phương thức tĩnh Math.log1p() trong JavaScript
Bùi Tấn Lực
- 917
- 10/09/2025
Chức năng của Phương thức tĩnh Math.log1p() trong JavaScript
Phương thức tĩnh Math.log1p() trong JavaScript dùng để thay thế cho cách tính Math.log(1+x) với tham số truyền vào mặc định cộng thêm 1, giúp độ chính xác tốt hơn nhiều, phương thức này để thực hiện phép tính ln(x) trong máy tính, nếu tham số bạn truyền vào Math.log1p(1) thì thực chất là đang thực hiện phép tính Math.log(1+1) = Math.log(2) nhưng sẽ có độ chính xác cao hơn, nó áp dụng cho các số nhỏ xíu để có độ chính xác cao, thường áp dụng trong các phép tính tài chính và khoa học.
Cú pháp của Phương thức tĩnh Math.log1p() trong JavaScript
Math.log1p(giatri);
giatri: Giá trị truyền vào (Ví dụ: 1, 0, 0.0001,.....)
Code Phương thức tĩnh Math.log1p() trong JavaScript
<script>
document.write(Math.log1p(0)+"<br>"); // Kết quả: 0 (Vì Math.log(1+0)= 0)
document.write(Math.log(1+0)+"<br>"); // Kết quả: 0
document.write(Math.log1p(1)+"<br>"); // Kết quả: 0.6931471805599453 (Vì Math.log(1+1)= 0.6931471805599453 cũng bằng Math.log(2))
document.write(Math.log(1+1)+"<br>"); // Kết quả: 0.6931471805599453
document.write(Math.log1p(0.0001)+"<br>"); // Kết quả: 0.00009999500033330834 (Vì Math.log(1+0.0001)= 0.00009999500033329732)
document.write(Math.log(1+0.0001)+"<br>"); // Kết quả: 0.00009999500033329732
</script>
Kết quả:
0
0
0.6931471805599453
0.6931471805599453
0.00009999500033330834
0.00009999500033329732
Khi nào nên sử dụng Math.log1p() thay cho Math.log(1 + x)?
Math.log1p() phù hợp khi cần tính logarit tự nhiên của 1 + x, đặc biệt trong những phép tính mà x có giá trị rất nhỏ. Trong trường hợp này, việc dùng trực tiếp phương thức chuyên dụng giúp phép tính thể hiện đúng mục đích và hạn chế sai số số học có thể phát sinh.
Math.log1p() chính xác hơn với các giá trị x rất nhỏ
Khi x rất gần 0, phép tính 1 + x có thể làm mất một phần độ chính xác do cách số thực được biểu diễn trong JavaScript. Sau đó, kết quả này tiếp tục được đưa vào Math.log(), khiến sai số có thể rõ hơn trong những phép tính yêu cầu độ chính xác cao.
Math.log1p(x) được thiết kế riêng cho trường hợp này. Vì vậy, khi xử lý các giá trị nhỏ như xác suất, tỷ lệ thay đổi hoặc những phép tính số học gần 0, nên ưu tiên phương thức này thay vì tự viết Math.log(1 + x).
const x = 0.000001;
console.log(Math.log1p(x));
console.log(Math.log(1 + x));
Với các giá trị thông thường, sự khác biệt có thể không đáng kể. Tuy nhiên, khi x tiến rất gần 0 và phép tính được thực hiện nhiều lần, việc lựa chọn Math.log1p() có thể giúp kết quả ổn định hơn.
So sánh Math.log1p() và Math.log(1 + x) trong JavaScript
Hai cách tính đều hướng tới cùng một biểu thức toán học là ln(1 + x), nhưng mục đích sử dụng có điểm khác nhau. Math.log(1 + x) phù hợp khi biểu thức được xây dựng trực tiếp và giá trị x không quá nhỏ. Trong khi đó, Math.log1p(x) thể hiện chính xác phép tính cần thực hiện và có lợi thế khi x gần 0.
| Cách tính | Đặc điểm | Nên dùng khi |
|---|---|---|
| Math.log(1 + x) | Tính 1 + x trước rồi lấy logarit tự nhiên | x có giá trị thông thường và không đặt nặng sai số ở vùng rất gần 0 |
| Math.log1p(x) | Tính trực tiếp ln(1 + x) | x rất nhỏ hoặc phép tính cần giữ độ chính xác tốt hơn |
Do đó, nếu biểu thức ngay từ đầu có dạng ln(1 + x), Math.log1p() thường là lựa chọn rõ ràng hơn. Cách viết này cũng giúp người đọc mã nguồn nhận biết ngay ý nghĩa toán học của phép tính.
Những trường hợp không nên sử dụng Math.log1p()
Không phải mọi phép tính logarit đều cần Math.log1p(). Nếu biểu thức không có dạng ln(1 + x), việc sử dụng phương thức này có thể làm mã nguồn khó hiểu hoặc cho kết quả không đúng với mục tiêu.
Chẳng hạn, khi cần tính ln(x), hãy sử dụng Math.log(x) thay vì biến đổi tùy tiện sang một biểu thức khác. Tương tự, nếu x có giá trị lớn và không có yêu cầu đặc biệt về độ chính xác quanh 0, Math.log(1 + x) vẫn có thể đáp ứng tốt nhu cầu thông thường.
Điểm quan trọng là chọn phương thức dựa trên biểu thức cần tính và đặc điểm của dữ liệu đầu vào. Với biểu thức ln(1 + x), đặc biệt khi x rất gần 0, Math.log1p() là lựa chọn phù hợp hơn.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Phương thức tĩnh Math.log1p() trong JavaScript.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *