stringifyNumber.js 718 B

123456789101112131415161718192021222324
  1. function stringifyNumber({ format, minFractionDigits, tag, value }) {
  2. if (typeof value === 'bigint')
  3. return String(value);
  4. const num = typeof value === 'number' ? value : Number(value);
  5. if (!isFinite(num))
  6. return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';
  7. let n = JSON.stringify(value);
  8. if (!format &&
  9. minFractionDigits &&
  10. (!tag || tag === 'tag:yaml.org,2002:float') &&
  11. /^\d/.test(n)) {
  12. let i = n.indexOf('.');
  13. if (i < 0) {
  14. i = n.length;
  15. n += '.';
  16. }
  17. let d = minFractionDigits - (n.length - i - 1);
  18. while (d-- > 0)
  19. n += '0';
  20. }
  21. return n;
  22. }
  23. export { stringifyNumber };