Почему я получаю нули, добавленные к десятичным значениям, которые я извлекаю из базы данных MS Access? - PullRequest
1 голос
/ 17 января 2012

Я изначально спрашивал это здесь , но должен был спросить отдельно.

Почему я получаю значения, такие как 2.01000000, из базы данных, хотя я храню только десятичные 2.01? В моей базе данных я вижу это 2.01, а не 2.010000. Поле в MS Access имеет десятичный тип, и я храню его как 2.01. Я тяну значение, как это:

 while(reader.Read())
        Convert.ToDecimal(reader[i]);

Я получаю значение как 2.010000000. Зачем? Есть ли лучший подход для чтения десятичных значений из базы данных? Я установил точность поля как 28 и масштабный коэффициент как 18 ..

Ответы [ 2 ]

2 голосов
/ 17 января 2012

В связи с тем, что System.Decimal внутренне чувствителен к степеням точности, SQL decimal еще больше - с указанием как часть типа.

Шкала 18 и точность 28 означают, что после десятичной точки в базе данных будет 18 значащих цифр. (Всего 28 цифр с точностью до 18, после точки оставляется 10 до).

Какой доступ включается в представление, которое он отправляет в код DAO.

А десятичное число записывается при выполнении анализа.

И, следовательно, вы можете видеть это.

Лично я считаю, что это недостаток; либо десятичное число должно выражать точность как явное свойство, либо оно должно скрывать его. Может быть, есть какое-то оправдание, о котором я не могу думать, но ни одно не приходит на ум.

0 голосов
/ 17 января 2012

Десятичная запоминает эти дополнительные нули по дизайну.Вы можете установить желаемый уровень точности, округлив число до правильной точности:

myNumber = decimal.Round(myNumber, 2);

Это изменит десятичную точность с точностью до 2 (и применит округление).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...