.NET Decimal = что в SQL?

Какой тип данных в SQL лучше всего подходит для представления Decimal в .NET?

Мы хотим хранить десятичные числа с точностью до 9 знаков после запятой и хотим избежать ошибок округления и т. д. Во внешнем интерфейсе.

Читая о типах данных, кажется, что использование Decimal в .NET - лучший вариант, потому что вы не получите ошибок округления, хотя это немного медленнее, чем Double.

Мы хотим донести это до БД и хотим минимизировать проблемы с преобразованием при перемещении данных по уровням. Какие-либо предложения?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
16
0
4 356
3

Ответы 3

Я бы использовал десятичный тип в SQL Server

Взгляните на Сопоставления типов данных SQL Server (ADO.NET)

Если вы используете SQL Server, этот стол может помочь с сопоставлением типов данных.

Итак, мы провели небольшое тестирование SQL Server. Похоже, что тип sql decimal не может полностью хранить десятичный формат .net.

SQL Server может хранить число до 38 десятичных цифр. Это сумма цифр слева и справа от десятичной точки. Вы устанавливаете «Масштаб», который сообщает серверу SQL, сколько десятичных цифр следует зарезервировать для числа справа от десятичного разряда. Если вы установите масштаб, то он уберет количество цифр слева от десятичной точки. (Точность - Масштаб = количество десятичных цифр слева от десятичного разряда)

.NET может представлять до 28 цифр справа от десятичной точки и 29 цифр слева. Для этого потребуется точность 57 в SQL Server, но максимально доступный - 38.

Итак, если вы хотите получить как можно больше точность и ваше число достаточно мало, вы можете сделать это:

decimal(38, 28)

В результате у вас останется 10 цифр слева и 28 цифр справа. Таким образом, любое число, превышающее 9999999999, не может быть представлено, но вы не потеряете точность при выполнении транзакций валютного типа.

С другой стороны, если ваши числа очень большой, вы можете сохранить их с помощью этого объявления:

decimal(38, 9)

Это позволит вам сохранить самое большое число, которое может хранить .net Decimal, длиной 29 цифр. У вас останется всего 8 десятичных знаков точности.

Если ничего из этого не звучит привлекательно, вы можете просто сохранить их как varchar. Это позволит вам сохранить любое десятичное число .net, но не позволит вам выполнять какие-либо вычисления с ними в SQL.

Другие вопросы по теме