1 | var helperStringRepeat = require('./helperStringRepeat')
|
2 | var helperNumberOffsetPoint = require('./helperNumberOffsetPoint')
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | function toNumberString(num) {
|
11 | var rest = '' + num
|
12 | var scienceMatchs = rest.match(/^([-+]?)((\d+)|((\d+)?[.](\d+)?))e([-+]{1})([0-9]+)$/)
|
13 | if (scienceMatchs) {
|
14 | var isNegative = num < 0
|
15 | var absFlag = isNegative ? '-' : ''
|
16 | var intNumStr = scienceMatchs[3] || ''
|
17 | var dIntNumStr = scienceMatchs[5] || ''
|
18 | var dFloatNumStr = scienceMatchs[6] || ''
|
19 | var sciencFlag = scienceMatchs[7]
|
20 | var scienceNumStr = scienceMatchs[8]
|
21 | var floatOffsetIndex = scienceNumStr - dFloatNumStr.length
|
22 | var intOffsetIndex = scienceNumStr - intNumStr.length
|
23 | var dIntOffsetIndex = scienceNumStr - dIntNumStr.length
|
24 | if (sciencFlag === '+') {
|
25 | if (intNumStr) {
|
26 | return absFlag + intNumStr + helperStringRepeat('0', scienceNumStr)
|
27 | }
|
28 | if (floatOffsetIndex > 0) {
|
29 | return absFlag + dIntNumStr + dFloatNumStr + helperStringRepeat('0', floatOffsetIndex)
|
30 | }
|
31 | return absFlag + dIntNumStr + helperNumberOffsetPoint(dFloatNumStr, scienceNumStr)
|
32 | }
|
33 | if (intNumStr) {
|
34 | if (intOffsetIndex > 0) {
|
35 | return absFlag + '0.' + helperStringRepeat('0', Math.abs(intOffsetIndex)) + intNumStr
|
36 | }
|
37 | return absFlag + helperNumberOffsetPoint(intNumStr, intOffsetIndex)
|
38 | }
|
39 | if (dIntOffsetIndex > 0) {
|
40 | return absFlag + '0.' + helperStringRepeat('0', Math.abs(dIntOffsetIndex)) + dIntNumStr + dFloatNumStr
|
41 | }
|
42 | return absFlag + helperNumberOffsetPoint(dIntNumStr, dIntOffsetIndex) + dFloatNumStr
|
43 | }
|
44 | return rest
|
45 | }
|
46 |
|
47 | module.exports = toNumberString
|