Вот оператор SQL, который у меня сейчас есть:
CAST(ISNULL(slp.WEIGHT, 0) AS numeric(10, 2)) AS shipweight
Он производит, например, 291659.399999999, то, что я хочу, это 291659.40.
Попробуйте использовать функцию ROUND вместо CAST.IMO, с помощью функции ROUND будет более понятно, что вы округляете значение, и более читабельно.
CAST(ISNULL(slp.WEIGHT, 0) AS decimal(10, 2)) AS shipweight
Это должно работать ...