Как обрезать десятичное число из двойного значения в c# - PullRequest
1 голос
/ 19 июня 2020

Я пытаюсь удалить последний di git из 1719.4703776041661 двойное значение в c#. Я хотел бы иметь только 12 цифр в двойном значении. Как я могу этого добиться?

Пытался выполнить следующее, но все еще получаю то же значение, что и ввод (13 цифр).

Math.Round(1719.4703776041661, 12) // Same Result with 13 digits
double.parse(value.ToString("N12"))

1 Ответ

2 голосов
/ 19 июня 2020

Вы столкнулись с проблемой точности. Проверьте это:

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
...