Sha256: 5784c5ecb14ad528474f5756e7ea2f385c306e0f0826a79bb5c8b11cd758584c
Contents?: true
Size: 1.15 KB
Versions: 30
Compression:
Stored size: 1.15 KB
Contents
export default function parse(input) { input = input.toUpperCase(); var splitIndex = input.indexOf("P"); var mantissa, exponent; if (splitIndex !== -1) { mantissa = input.substring(0, splitIndex); exponent = parseInt(input.substring(splitIndex + 1)); } else { mantissa = input; exponent = 0; } var dotIndex = mantissa.indexOf("."); if (dotIndex !== -1) { var integerPart = parseInt(mantissa.substring(0, dotIndex), 16); var sign = Math.sign(integerPart); integerPart = sign * integerPart; var fractionLength = mantissa.length - dotIndex - 1; var fractionalPart = parseInt(mantissa.substring(dotIndex + 1), 16); var fraction = fractionLength > 0 ? fractionalPart / Math.pow(16, fractionLength) : 0; if (sign === 0) { if (fraction === 0) { mantissa = sign; } else { if (Object.is(sign, -0)) { mantissa = -fraction; } else { mantissa = fraction; } } } else { mantissa = sign * (integerPart + fraction); } } else { mantissa = parseInt(mantissa, 16); } return mantissa * (splitIndex !== -1 ? Math.pow(2, exponent) : 1); }
Version data entries
30 entries across 29 versions & 10 rubygems