Fix this bug, reported against this repository (humanize):

`intword()` decides whether rounding pushed a value up into the next magnitude with:

    if not largest_ordinal and rounded_value * power == powers[ordinal + 1]:

For values above ~10**22, `rounded_value * power` is evaluated in floating point and no longer equals the exact `powers[ordinal + 1]`, so the carry is skipped and the number is rendered against the lower magnitude:

    >>> import humanize
    >>> humanize.intword(10**24 - 1)
    '1000.0 sextillion'      # expected '1.0 septillion'
    >>> humanize.intword(10**27 - 1)
    '1000.0 septillion'      # expected '1.0 octillion'

The same happens at 10**30 and 10**33.

Add a regression test. The project virtualenv is ready in .venv: run the tests with `.venv/bin/python -m pytest -q`. Work only inside this repository. Do not commit.
