При округлении денежных сумм с использованием алгоритма для швейцарских франков учитываются вторая и третья десятичные цифры. Если меньше 26, они округляются до 0; иначе, если меньше 76, округляется до 5; иначе все значение округляется в большую сторону.
20.125 => 20.10
20.143 => 20.15
20.179 => 20.20
Что происходит, если округляемая сумма имеет большую десятичную точность? Все ли десятичные цифры после третьей просто игнорируются (значение усекается), или значение сначала округляется каким-либо другим способом до трех десятичных цифр? В качестве примера рассмотрим усечение по сравнению с подходом «Math.round ()» (менее 0,5 округления в меньшую сторону, иначе округление в большую сторону):
Truncation | "Math.round"
=================================================================
Start 3 d.p. Rounded | Start 3 d.p. Rounded
=================================================================
20.1259 -> 20.125 => 20.10 | 20.1259 -> 20.126 => 20.15
20.1759 -> 20.175 => 20.15 | 20.1759 -> 20.176 => 20.20
Как показано выше, эти граничные случаи сильно различаются в конечном результате.
Округление валюты Аргентины следует аналогичной модели, которая касается только третьего десятичного знака. Хотя округленный результат может иметь два или три десятичных знака, применяется тот же принцип; если округляемое значение состоит из четырех или более десятичных цифр, Есть ли способ ускорить это?