BigDecimal в JavaScript

Я очень плохо знаком с JavaScript (я пришел из Java) и пытаюсь провести некоторые финансовые расчеты с небольшими суммами денег.

Мой первоначальный вариант:

<script type="text/javascript">
    var normBase = ("[price]").replace("$", "");
    var salesBase = ("[saleprice]").replace("$", "");
    var base;
    if (salesBase != 0) {
        base = salesBase;
    } else {
        base = normBase;
    }
    var per5  = (base - (base * 0.05));
    var per7  = (base - (base * 0.07));
    var per10 = (base - (base * 0.10));
    var per15 = (base - (base * 0.15));
    document.write
        (
        '5% Off: $'  + (Math.ceil(per5  * 100) / 100).toFixed(2) + '<br/>' +
        '7% Off: $'  + (Math.ceil(per7  * 100) / 100).toFixed(2) + '<br/>' +
        '10% Off: $' + (Math.ceil(per10 * 100) / 100).toFixed(2) + '<br/>' +
        '15% Off: $' + (Math.ceil(per15 * 100) / 100).toFixed(2) + '<br/>'
    );
</script>

Это сработало хорошо, за исключением того, что всегда округлялось (Math.ceil). Math.floor имеет ту же проблему, и Math.round также не годится для поплавков.

В Java я бы полностью избежал использования поплавков с самого начала, однако в JavaScript, по-видимому, нет включения по умолчанию чего-то сопоставимого.

Проблема в том, что все упомянутые библиотеки либо сломаны, либо для другой цели. Библиотека jsfromhell.com/classes/bignumber очень близка к тому, что мне нужно, однако у меня возникают причудливые проблемы с ее округлением и точностью... Независимо от того, на что я установил Round Type, кажется, что он решает сам по себе. Так, например, 3.7107 с точностью до 2 и круглым типом ROUND_HALF_UP каким-то образом получается как 3.72, тогда как должно быть 3.71.

Я также попробовал библиотеку @JasonSmith BigDecimal (обработанный порт из Java BigDecimal), но, похоже, это для node.js, который я не могу запустить.

Как я могу сделать это, используя vanilla JavaScript (и быть надежным), или есть современная (упомянутая выше, которой уже все годы) библиотека, которую я могу использовать, которая поддерживается и не сломана?