Швейцарская и аргентинская валюта округление четвертого знака после запятой - PullRequest
8 голосов
/ 27 февраля 2011

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

3 голосов
/ 27 февраля 2011

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

Таким образом, я бы предположил, что метод «Усечение» будет уместным, поскольку 0.0259XXXXX меньше, чем 0.026

...