Nếu độ chính xác quan trọng và bạn yêu cầu kết quả nhất quán, đây là một vài đề xuất sẽ trả về phần thập phân của bất kỳ số nào dưới dạng chuỗi, bao gồm cả "0." hàng đầu. Nếu bạn cần nó như một cái phao, chỉ cần thêm var f = parseFloat( result )
vào cuối cùng.
Nếu phần thập phân bằng 0, "0,0" sẽ được trả về. Số không, NaN và số không xác định không được kiểm tra.
1. Chuỗi.split
var nstring = (n + ""),
narray = nstring.split("."),
result = "0." + ( narray.length > 1 ? narray[1] : "0" );
2. String.sub chuỗi, String.indexOf
var nstring = (n + ""),
nindex = nstring.indexOf("."),
result = "0." + (nindex > -1 ? nstring.substring(nindex + 1) : "0");
3. Math.floor, Number.toFixed, String.indexOf
var nstring = (n + ""),
nindex = nstring.indexOf("."),
result = ( nindex > -1 ? (n - Math.floor(n)).toFixed(nstring.length - nindex - 1) : "0.0");
4. Math.floor, Number.toFixed, String.split
var nstring = (n + ""),
narray = nstring.split("."),
result = (narray.length > 1 ? (n - Math.floor(n)).toFixed(narray[1].length) : "0.0");
Đây là một liên kết jsPerf: https://jsperf.com/decpart-of-number/
Chúng ta có thể thấy rằng đề xuất # 2 là nhanh nhất.
n = Math.floor(n);
chỉ trả về kết quả mong muốn của bạn (phần nguyên) cho các số không âm