Каков эквивалентный тип данных SQL Server числовой в C # - PullRequest
42 голосов
/ 21 июля 2011

В SQL Server мы можем записать данные AS Numeric(15,10) .. что будет эквивалентно этому в C #?

Я знаю, что эквивалент Numeric равен Decimal, но как представить Numeric(15,10)

Ответы [ 3 ]

63 голосов
/ 21 июля 2011

Прямого эквивалента нет, в том смысле, что нет встроенных типов .NET, которые позволяют вам явно указывать точность / масштаб, насколько мне известно. Не существует фиксированного типа точки, например NUMERIC.

decimal и double являются общими типами с плавающей запятой в .NET, где decimal реализует десятичную с плавающей запятой (как NUMERIC в T-SQL) и double реализует бинарное поведение с плавающей точкой (например, FLOAT и REAL в T-SQL). (Также есть float, который является меньшим двоичным типом с плавающей запятой.)

Вам следует выбирать между decimal и double в зависимости от того, какие ценности вы собираетесь представлять - я обычно думаю о "рукотворных", искусственных ценностях (особенно деньгах) как подходящих для decimal, и непрерывные, натуральные значения (такие как физические размеры), подходящие для double.

11 голосов
/ 21 июля 2011

Попробуйте посмотреть на этом сайте как руководство по отображению типов данных.Что касается точности и длины, вы сами управляете ими, используя спецификаторы формата

0 голосов
/ 30 июля 2015

Есть два ответа в зависимости от двух вопросов:

1) Что-то, что позволяет вам указать точность и масштаб.Ничего такого.Это похоже на ваш вопрос, но на всякий случай:

2) Что-то, что позволяет вам указывать десятичное число с плавающей запятой точно .Это действительно десятичный тип, но точка является внутренней и устанавливается на одну из 2 ^ 32 позиций в зависимости от введенного числа.Не уверен, почему, но работают только 28 значений, или 2 ^ 5 - 4 ..

Так что, хотя .Net позволяет десятичной дроби выглядеть как число с плавающей точкой, она очень отличается под обложками и соответствует десятичной дробиSQLServer.Все, что не является суммой различных степеней двух значений, является оценкой с использованием обычной двоичной плавающей запятой.Это означает, что даже что-то, такое как число 0,1, уже потеряло точность.Но не с десятичным типом.

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