MCPcopy Create free account
hub / github.com/chronoxor/FastBinaryEncoding / parse

Function parse

projects/JavaScript/proto/big.js:131–178  ·  view source on GitHub ↗
(x, n)

Source from the content-addressed store, hash-verified

129 * n {number|string} A numeric value.
130 */
131 function parse(x, n) {
132 var e, i, nl;
133
134 // Minus zero?
135 if (n === 0 && 1 / n < 0) n = '-0';
136 else if (!NUMERIC.test(n += '')) throw Error(INVALID + 'number');
137
138 // Determine sign.
139 x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;
140
141 // Decimal point?
142 if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');
143
144 // Exponential form?
145 if ((i = n.search(/e/i)) > 0) {
146
147 // Determine exponent.
148 if (e < 0) e = i;
149 e += +n.slice(i + 1);
150 n = n.substring(0, i);
151 } else if (e < 0) {
152
153 // Integer.
154 e = n.length;
155 }
156
157 nl = n.length;
158
159 // Determine leading zeros.
160 for (i = 0; i < nl && n.charAt(i) == '0';) ++i;
161
162 if (i == nl) {
163
164 // Zero.
165 x.c = [x.e = 0];
166 } else {
167
168 // Determine trailing zeros.
169 for (; nl > 0 && n.charAt(--nl) == '0';);
170 x.e = e - i - 1;
171 x.c = [];
172
173 // Convert string to array of digits without leading/trailing zeros.
174 for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);
175 }
176
177 return x;
178 }
179
180
181 /*

Callers 1

BigFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected