digExp.mjs

import isnum from './isnum.mjs'
import isp0int from './isp0int.mjs'
import cdbl from './cdbl.mjs'
import dig from './dig.mjs'


/**
 * 數字取指定小數位,小於1e-6改指數顯示
 * 若輸入不是數字或字串時則回傳空字串
 *
 * Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/digExp.test.mjs Github}
 * @memberOf wsemi
 * @param {Number|String} v 輸入數字或字串
 * @param {Integer} [idig=0] 輸入指定小數位整數,預設為0
 * @returns {String} 回傳取指定小數位的字串
 * @example
 *
 * console.log(digExp(0.000000123456789, 2))
 * // => '1.23e-7'
 *
 */
function digExp(v, idig = 0) {

    //check
    if (!isnum(v)) {
        return ''
    }
    if (!isp0int(idig)) {
        return ''
    }

    v = cdbl(v)

    let r = ''
    if (v === 0) {
        r = '0'
    }
    else if (Math.abs(v) <= 1e-6) {
        r = v.toExponential(idig)
    }
    else {
        r = dig(v, idig)
    }

    return r
}


export default digExp