24 lines
960 B
JavaScript
24 lines
960 B
JavaScript
'use strict';
|
|
var global = require('../internals/global');
|
|
var fails = require('../internals/fails');
|
|
var uncurryThis = require('../internals/function-uncurry-this');
|
|
var toString = require('../internals/to-string');
|
|
var trim = require('../internals/string-trim').trim;
|
|
var whitespaces = require('../internals/whitespaces');
|
|
|
|
var charAt = uncurryThis(''.charAt);
|
|
var $parseFloat = global.parseFloat;
|
|
var Symbol = global.Symbol;
|
|
var ITERATOR = Symbol && Symbol.iterator;
|
|
var FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity
|
|
// MS Edge 18- broken with boxed symbols
|
|
|| (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); }));
|
|
|
|
// `parseFloat` method
|
|
// https://tc39.es/ecma262/#sec-parsefloat-string
|
|
module.exports = FORCED ? function parseFloat(string) {
|
|
var trimmedString = trim(toString(string));
|
|
var result = $parseFloat(trimmedString);
|
|
return result === 0 && charAt(trimmedString, 0) === '-' ? -0 : result;
|
|
} : $parseFloat;
|