Швейцарская и аргентинская четвертая десятичная цифра

При округлении суммы валюты с использованием алгоритма для швейцарских франков учитываются вторая и третья десятичные разряды. Если меньше 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

Как видно из вышеизложенного, эти крайние случаи сильно изменяются в конечном результате.

Аргентинское округление валюты следует аналогичной модели, которая касается только третьей десятичной цифры. Хотя округленный результат может иметь два или три десятичных знака, применяется тот же принцип; если значение, которое нужно округлить, имеет четыре или более десятичных цифры, должен ли алгоритм просто урезать что-либо после третьей цифры или должен ли он применить какое-то другое промежуточное округление, чтобы получить результат с тремя знаками после запятой?

Спасибо!

Ответ 1

Если меньше 26, они округляются до 0; иначе если менее 76, округляется до 5; иначе все значение округляется.

Под этим я бы предположил, что метод "Усечение" будет уместным, так как 0.0259XXXXX меньше 0,026