Какие типы я должен использовать для представления процентов в C # и SQL Server? - PullRequest
17 голосов
/ 01 октября 2008

Я думаю, что плавает. Для записи я также использую NHibernate.

Ответы [ 6 ]

22 голосов
/ 01 октября 2008

decimal

Вы не потеряете точность из-за округления.

3 голосов
/ 01 октября 2008

Ответ зависит от приложения.

Другие отметили, что десятичная дробь лучше, чем float, для представления точного значения. Но иногда лучше использовать поплавок для повышенной точности (например, набор вычисленных весов, которые составляют до 100%, вероятно, лучше представить в виде поплавка)

2 голосов
/ 01 октября 2008

Это во многом зависит от того, сколько точности вам нужно; Самое главное - быть последовательным и понятным. Примите меры предосторожности, чтобы убедиться, что вы согласны во всем использовании поля, т. Е. Не храните его как число с плавающей точкой (n = .5), а затем попытайтесь восстановить его, как если бы оно было целым числом в другой части вашего кода (mypercentage = п / 100). Если вы уверены, что этого не сделаете, и не создаете лазер, который требует 30 значащих цифр точности, просто выберите ваш любимый аромат между int, double или любым другим, равным float s вашей лодке. Вака Вака.

1 голос
/ 01 октября 2008

Что касается SQL Server, я редко храню процент. 9 раз из 10 вы хотите сохранить данные, которые используются для получения процентного соотношения, и рассчитывать при необходимости.

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

1 голос
/ 01 октября 2008

Зависит от того, насколько точно вам нужно. Если вам не нужны десятичные разряды, вы можете использовать крошечное int. Но, как правило, поплавки хороши, если вам нужны десятичные знаки. Я использую LLBLGen и плаваю для% s

0 голосов
/ 01 октября 2008

Зависит от того, для чего вы их используете.

, если он для отображения, int будет хорошо, и будет быстрее, чем float. Если бы это было из-за редкой математики, int все равно бы работал хорошо (или даже коротко, в любом случае).

Если вы много занимаетесь математикой, то, вероятно, лучше использовать float с точки зрения производительности.

Конечно, если вы не выполняете МНОГО манипулирования процентами, это не будет иметь большого значения в конечном итоге, с точки зрения производительности, учитывая современную скорость процессора.

РЕДАКТИРОВАТЬ: Конечно, 'int' предполагает, что вы просто используете строгие, целые числа процентов. Если нет, то вы ВСЕГДА были бы лучше с float или dec.

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