Информация об изменениях

Сообщение Re[3]: Как изящнее реализовать банковское округление? от 16.03.2021 6:41

Изменено 17.03.2021 10:32 netch80

Re[3]: Как изящнее реализовать банковское округление?
Здравствуйте, Marty, Вы писали:

M>Да х его знает, меня интересовали floor, ceil, trunc, math и банковское. Остальное решил запилить за кампанию — чтобы было


RfSP нужно для поддержки двойных и более округлений: каждое через финальное делать через него.
Иначе, например, 1.499999 сначала округлится обычным RfE до 1.500, а потом до 2, хотя напрямую должно было быть до 1. Через RfSP тебе округлит до 1.499, а дальше, понятно, RfE до 1.

M>Спс, покурю как-нить на досуге. Буравчиковое решение со стек оверфлов тупо закодил и вроде работает. Пока доволен


Я не понял по коду, что именно ты там таки запилил, но ты проверил не на 0.5 случаи?
Первые два precisionFitTo с усечением(?) два подряд — нужны ли они?
В общем, пока все случаи не проверишь... я бы не утверждал, что работает.
Я так навскидку посмотрел:
x = 23.1
truncate(x) == 23
truncate(x)%2 == 1
в сумме 24, а нужно 23.
Re[3]: Как изящнее реализовать банковское округление?
Здравствуйте, Marty, Вы писали:

M>Да х его знает, меня интересовали floor, ceil, trunc, math и банковское. Остальное решил запилить за кампанию — чтобы было


RfSP нужно для поддержки двойных и более округлений: каждое, кроме финального, делать через него.
Иначе, например, 1.499999 сначала округлится обычным RfE до 1.500, а потом до 2, хотя напрямую должно было быть до 1. Через RfSP тебе округлит до 1.499, а дальше, понятно, RfE до 1.

M>Спс, покурю как-нить на досуге. Буравчиковое решение со стек оверфлов тупо закодил и вроде работает. Пока доволен


Я не понял по коду, что именно ты там таки запилил, но ты проверил не на 0.5 случаи?
Первые два precisionFitTo с усечением(?) два подряд — нужны ли они?
В общем, пока все случаи не проверишь... я бы не утверждал, что работает.
Я так навскидку посмотрел:
x = 23.1
truncate(x) == 23
truncate(x)%2 == 1
в сумме 24, а нужно 23.