Вы столкнулись с проблемой точности. Проверьте это:
double d = 1719.4703776041849;
Установите точку останова и проверьте значение, хранящееся в d
, вы удивитесь, что оно не совпадает. Это потому, что число требует более высокой точности, чем предлагает double
.
Если вам нужна такая точность, вы должны использовать decimal
вместо double
. Это будет работать:
decimal d = 1719.4703776041661M; //Need the M suffix to denote a decimal value.
var z = Math.Round(d, 12); //It returns 1719.470377604166