Округление четвертой десятичной цифры в швейцарских и аргентинских валютах

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

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

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

5
задан Alec Gorge 27 February 2011 в 17:32
поделиться