double-double
Version:
Pure double-double precision functions *with strict error bounds*.
40 lines (34 loc) • 1.01 kB
text/typescript
/**
* Returns the number of leading zeros (plus 1) after the decimal point or `0`
* if the number is >= 1 or equal to zero.
*
* * the number string must be positive
* * the number string must not start with a `+` sign
* * the number string must must be a simple decimal expansion, e.g. no `e-8`
* at the end
*
* Examples:
* `getNumLeadingZeros(0.1) // => 0`
* `getNumLeadingZeros(0.001) // => 2`
* `getNumLeadingZeros(3.001) // => 0`
* `getNumLeadingZeros(13) // => 0`
* `getNumLeadingZeros(0) // => 0
*
* @param str
*
* @internal
*/
function getNumLeadingZerosAfterPoint(str: string) {
if (!str.startsWith('0.')) { return 0; }
if (Number(str) === 0) { return 0; }
let numLeadingZeros = 1;
for (let i=0; i<str.length; i++) {
if (str[i + 2] === '0') {
numLeadingZeros++;
} else {
break;
}
}
return numLeadingZeros;
}
export { getNumLeadingZerosAfterPoint }