หากความแม่นยำมีความสำคัญและคุณต้องการผลลัพธ์ที่สอดคล้องกันนี่เป็นข้อเสนอบางประการที่จะส่งคืนส่วนทศนิยมของตัวเลขใด ๆ ที่เป็นสตริงรวมถึงส่วนนำ "0" หากคุณต้องการมันเป็นแบบลอยตัวให้เพิ่มvar f = parseFloat( result )
เข้าไปในท้ายที่สุด
หากส่วนทศนิยมเท่ากับศูนย์จะส่งคืน "0.0" ตัวเลข Null, NaN และ undefined จะไม่ถูกทดสอบ
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");
นี่คือลิงค์ jsPerf: https://jsperf.com/decpart-of-number/
เราจะเห็นว่าข้อเสนอที่ 2 นั้นเร็วที่สุด
n = Math.floor(n);
จะส่งคืนผลลัพธ์ที่คุณต้องการ (ส่วนจำนวนเต็ม) สำหรับตัวเลขที่ไม่เป็นลบ