Сообщение Re[2]: Как изящнее реализовать банковское округление? от 16.03.2021 18:43
Изменено 16.03.2021 19:04 netch80
Re[2]: Как изящнее реализовать банковское округление?
Здравствуйте, vmpire, Вы писали:
V>Я понимаю, что это раздел "алгоритмы", но ведь наверняка уже есть что-то готовое, зачем изобретать велосипед?
V>В .NET, например: Math.Round(amount, 1, MidpointRounding.ToEven)
V>Кстати, можно и его исходники посмотреть, если интересует алгоритм
Ну я дал ссылку на Berkeley Softfloat.
А вот в дотнете слишком завязано на особенности внутренней реализации Decimal и потому не переносится.
V>Я понимаю, что это раздел "алгоритмы", но ведь наверняка уже есть что-то готовое, зачем изобретать велосипед?
V>В .NET, например: Math.Round(amount, 1, MidpointRounding.ToEven)
V>Кстати, можно и его исходники посмотреть, если интересует алгоритм
Ну я дал ссылку на Berkeley Softfloat.
А вот в дотнете слишком завязано на особенности внутренней реализации Decimal и потому не переносится.
Re[2]: Как изящнее реализовать банковское округление?
Здравствуйте, vmpire, Вы писали:
V>Я понимаю, что это раздел "алгоритмы", но ведь наверняка уже есть что-то готовое, зачем изобретать велосипед?
V>В .NET, например: Math.Round(amount, 1, MidpointRounding.ToEven)
V>Кстати, можно и его исходники посмотреть, если интересует алгоритм
Ну я дал ссылку на Berkeley Softfloat.
А вот в дотнете слишком завязано на особенности внутренней реализации Decimal и потому напрямую не переносится. Но там по сути делают так же, как я описал: sticky bits собирают признак наличия значения свыше 0.5.
V>Я понимаю, что это раздел "алгоритмы", но ведь наверняка уже есть что-то готовое, зачем изобретать велосипед?
V>В .NET, например: Math.Round(amount, 1, MidpointRounding.ToEven)
V>Кстати, можно и его исходники посмотреть, если интересует алгоритм
Ну я дал ссылку на Berkeley Softfloat.
А вот в дотнете слишком завязано на особенности внутренней реализации Decimal и потому напрямую не переносится. Но там по сути делают так же, как я описал: sticky bits собирают признак наличия значения свыше 0.5.