1
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
var helperStringRepeat = require('./helperStringRepeat')
|
||||
var helperNumberOffsetPoint = require('./helperNumberOffsetPoint')
|
||||
|
||||
/**
|
||||
* 数值转字符串,科学计数转字符串
|
||||
* @param { Number } num 数值
|
||||
*
|
||||
* @return {Number}
|
||||
*/
|
||||
function toNumberString(num) {
|
||||
var rest = '' + num
|
||||
var scienceMatchs = rest.match(/^([-+]?)((\d+)|((\d+)?[.](\d+)?))e([-+]{1})([0-9]+)$/)
|
||||
if (scienceMatchs) {
|
||||
var isNegative = num < 0
|
||||
var absFlag = isNegative ? '-' : ''
|
||||
var intNumStr = scienceMatchs[3] || ''
|
||||
var dIntNumStr = scienceMatchs[5] || ''
|
||||
var dFloatNumStr = scienceMatchs[6] || ''
|
||||
var sciencFlag = scienceMatchs[7]
|
||||
var scienceNumStr = scienceMatchs[8]
|
||||
var floatOffsetIndex = scienceNumStr - dFloatNumStr.length
|
||||
var intOffsetIndex = scienceNumStr - intNumStr.length
|
||||
var dIntOffsetIndex = scienceNumStr - dIntNumStr.length
|
||||
if (sciencFlag === '+') {
|
||||
if (intNumStr) {
|
||||
return absFlag + intNumStr + helperStringRepeat('0', scienceNumStr)
|
||||
}
|
||||
if (floatOffsetIndex > 0) {
|
||||
return absFlag + dIntNumStr + dFloatNumStr + helperStringRepeat('0', floatOffsetIndex)
|
||||
}
|
||||
return absFlag + dIntNumStr + helperNumberOffsetPoint(dFloatNumStr, scienceNumStr)
|
||||
}
|
||||
if (intNumStr) {
|
||||
if (intOffsetIndex > 0) {
|
||||
return absFlag + '0.' + helperStringRepeat('0', Math.abs(intOffsetIndex)) + intNumStr
|
||||
}
|
||||
return absFlag + helperNumberOffsetPoint(intNumStr, intOffsetIndex)
|
||||
}
|
||||
if (dIntOffsetIndex > 0) {
|
||||
return absFlag + '0.' + helperStringRepeat('0', Math.abs(dIntOffsetIndex)) + dIntNumStr + dFloatNumStr
|
||||
}
|
||||
return absFlag + helperNumberOffsetPoint(dIntNumStr, dIntOffsetIndex) + dFloatNumStr
|
||||
}
|
||||
return rest
|
||||
}
|
||||
|
||||
module.exports = toNumberString
|
||||
Reference in New Issue
Block a user