Jika ketepatan penting dan Anda membutuhkan hasil yang konsisten, berikut adalah beberapa proposisi yang akan mengembalikan bagian desimal dari angka apa pun sebagai string, termasuk yang memimpin "0.". Jika Anda membutuhkannya sebagai pelampung, cukup tambahkan var f = parseFloat( result )
pada akhirnya.
Jika bagian desimal sama dengan nol, "0,0" akan dikembalikan. Null, NaN, dan angka yang tidak ditentukan tidak diuji.
1. String.split
var nstring = (n + ""),
narray = nstring.split("."),
result = "0." + ( narray.length > 1 ? narray[1] : "0" );
2. String.substring, 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");
Berikut ini tautan jsPerf: https://jsperf.com/decpart-of-number/
Kita dapat melihat bahwa proposisi # 2 adalah yang tercepat.
n = Math.floor(n);
hanya mengembalikan hasil yang Anda inginkan (bagian bilangan bulat) untuk nomor non-negatif