정밀도가 중요하고 일관된 결과가 필요한 경우 선행 "0"을 포함하여 숫자의 소수 부분을 문자열로 반환하는 몇 가지 제안이 있습니다. 플로트로 필요 var f = parseFloat( result )
하면 끝에 추가 하십시오.
소수 부분이 0이면 "0.0"이 반환됩니다. Null, NaN 및 정의되지 않은 숫자는 테스트되지 않습니다.
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);
만이 아닌 음수 원하는 결과 (정수 부분)를 반환