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