// @flow
import { getFormatter } from './intlNumberFormat';

export function formatNumber(num: number, numberOfDigits?: number, short: boolean = false): string {
  const language = localStorage.getItem('language') || undefined;
  const safePrecision = Math.min(20, numberOfDigits || 0);
  const formatter = getFormatter(language, {
    maximumFractionDigits: safePrecision,
    notation: short ? 'compact' : 'standard',
    compactDisplay: 'short',
  });
  return formatter.format(num);
}

export function formatNumberWithCommas(num: number, numberOfDigits?: number): string {
  return num.toLocaleString('en', { minimumFractionDigits: numberOfDigits !== undefined ? numberOfDigits : 8 });
}

export function isTrulyANumber(num: number) {
  // typeof NaN = 'number' but NaN !== NaN
  return typeof num === 'number' && num === num; // eslint-disable-line
}