Get the name of a number, even if it's stupidly big.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

24 lines
761 B

  1. import { Digit, GetKiloName } from '../../common'
  2. import NAMES from './names'
  3. import getKiloCombiningPrefix from './base/kilo/combiningPrefix'
  4. const getEuropeanLongKiloName: GetKiloName = (thousandPower) => {
  5. if (thousandPower === 0n) {
  6. return ''
  7. }
  8. if (thousandPower === 1n) {
  9. return NAMES.thousand
  10. }
  11. const kilo = thousandPower
  12. const kiloHundreds = kilo / 2n / 100n
  13. const kiloTens = (Number(kilo / 2n / 10n) % 10) as Digit
  14. const kiloOnes = (Number(kilo / 2n) % 10) as Digit
  15. const kiloCombiningPrefix = getKiloCombiningPrefix(kiloHundreds, kiloTens, kiloOnes)
  16. return thousandPower % 2n === 0n
  17. ? kiloCombiningPrefix + NAMES.kiloEvenSuffix
  18. : kiloCombiningPrefix + NAMES.kiloOddSuffix
  19. }
  20. export default getEuropeanLongKiloName