function formatNumberWithLimitedSigFig()

in runtime/shared/intlNumUtils.js [244:274]


function formatNumberWithLimitedSigFig(
  value: number,
  decimals: ?number,
  numSigFigs: number,
): string {
  // First make the number sufficiently integer-like.
  const power = _getNumberOfPowersOfTen(value);
  let inflatedValue = value;
  if (power < numSigFigs) {
    inflatedValue = value * Math.pow(10, -power + numSigFigs);
  }
  // Now that we have a large enough integer, round to cut off some digits.
  const roundTo = Math.pow(
    10,
    _getNumberOfPowersOfTen(inflatedValue) - numSigFigs + 1,
  );
  let truncatedValue = Math.round(inflatedValue / roundTo) * roundTo;
  // Bring it back to whatever the number's magnitude was before.
  if (power < numSigFigs) {
    truncatedValue /= Math.pow(10, -power + numSigFigs);
    // Determine number of decimals based on sig figs
    if (decimals == null) {
      return formatNumberWithThousandDelimiters(
        truncatedValue,
        numSigFigs - power - 1,
      );
    }
  }
  // Decimals
  return formatNumberWithThousandDelimiters(truncatedValue, decimals);
}