При округлении денежных сумм с использованием алгоритма для швейцарских франков учитываются вторые и третьи десятичные цифры. Если меньше 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
Как показано выше, эти крайние случаи сильно различаются в конечном результате.
Округление валюты Аргентины следует аналогичной модели, которая касается только третьего десятичного знака. Хотя округленный результат может иметь два или три десятичных знака, применяется тот же принцип; если округляемое значение имеет четыре или более десятичных разряда, должен ли алгоритм просто обрезать что-либо после третьей цифры или он должен применять какой-либо другой вид промежуточного округления, чтобы сначала получить результат с тремя десятичными знаками?
Спасибо!