Нет, вопрос немного в другом, давайте пойдем от обратного - от проблемы. В windows округление всегда работало так как и ожидает от него человек, но на linux и net core мы столкнулись с тем что округление "срабатывает неправильно", как ваш коллега и объяснил:Не совсем понятен вопрос.
Имеется в виду, когда для ячейки выбираете TextFormat -> Number, и там количество знаков после запятой автоматически ставилось определённое?
В таком случае мы можем исправить проблему если будем использовать ваш метод Round либо, например, всегда приводить значение к decimal, конечно первый вариант проще, но представьте, сколько ячеек нужно будет переписать, для 500 отчетов, что бы вместо {value} добавить {Round(value)}. И это только потому, что просто указав числовой формат ячейки - там вызывается (как вы и сказали) ToString, который возвращает кривые значения, в отличии от вашего метода Round.В NetCore начиная с версии NetCore3.0 были сделаны изменения, чтобы вычисления соответствовали стандарту "IEEE 754-2008".
(Но тут не совсем понятен механизм, учитывая, что при выставлении общего формата возвращается правильное значение, на что я уже ранее указывал)
Именно по этому хотелось бы обойтись одной настройкой для всех отчетов, что бы везде оставался интуитивно понятный числовой формат, а в нем, в зависимости от этой настройки, будет вызываться либо стандартный ToString, либо ваш метод Round.
Дополнение:
Но это то решение, которое вижу я. Возможно у вас есть другой вариант, можем его рассмотреть.