2009-12-18 1 views
2

делает карту данных типа данных sql в C# float?действительно ли карта денег хорошо плавает?

+0

Кроме того, у вас довольно высокая точка отсчета. Прежде чем отправлять такие вопросы, как этот google, или даже искать этот же точный вопрос. Его спрашивали сотни раз. – JonH

+0

@JonH: Искать на СО, непременно. Но никогда не предполагалось, что SO будет вашим вторым выбором после Google. Этот сайт был специально разработан, чтобы сделать поиск Google ненужным. Чтобы дать людям * один надежный сайт для получения ответов, а не полагаться на Google, указывая нам на сотни разных и ненадежных сайтов. – jalf

+0

@jalf - Моей точкой является поиск, а не простой простой вопрос. Кроме того, если вы ищете в google, есть довольно большой шанс, что результат укажет на вас здесь. Если вы находитесь в середине кодирования, и вам нужно что-то действительно быстрое, нет ничего плохого в поисковом рассылке. – JonH

ответ

12

Нет ... оно соответствует decimal. Если столбец разрешает null, он отображает значение Nullable<Decimal>.

Mapping CLR Parameter Data

float не является достаточно точным, чтобы использовать для денежных расчетов. Вы теряете/получаете деньги повсюду.

+1

Только в том случае, если столбец допускает нулевые значения - в противном случае он непосредственно сопоставляется с Decimal. –

+0

@Reed - Спасибо за разъяснение. Я опередил меня. Обновлено соответствующим образом. –

+0

Почему это не показывает, что ответ был отредактирован? – CSharpAtl

2

Я бы использовал десятичную запятую.

Тип Десятичного значения представляет десятичных чисел в диапазоне от положительного 79,228,162,514,264,337,593,543,950,335 к отрицательным 79,228,162,514,264,337,593,543,950,335. Тип десятичного значения является подходящим для финансовых расчетов, требующих большое количество значимого интеграла и дробных цифр и без округления ошибок. Десятичный тип не устраняет необходимость округления. Скорее, он минимизирует ошибки из-за округления .

0

No.

Деньги сопоставляется Decimal. Если столбец MONEY разрешает нулевые значения, он будет отображаться на Nullable<Decimal>.. Подробнее см. SQL-CLR Type Mapping.

Поплавок не является достаточно точным для численных расчетов, касающихся денег. Вы всегда должны выполнять все ваши вычисления с использованием десятичных значений.

0

Нет, float имеет слишком низкую точность для обработки денежных значений. Семь цифр не доставят вас далеко. Также тип с плавающей запятой склонен к ошибкам округления из-за того, как представлены числа.

Используйте тип данных Decimal.

2

Только если вы хотите потерять деньги.

+3

+1 для snark, -1 для альтернативы. – Will

Смежные вопросы