C #: Хранение процентов, 50 или 0,50? - PullRequest
13 голосов
/ 22 июля 2010

При хранении процентных значений в переменных предпочтение отдается их сохранению в виде целых чисел по сравнению с дробями. То есть переменная должна содержать числа от 0 до 100 или от 0,00 до 1,00? В любом случае переменная, содержащая значения, имеет десятичный тип.

База данных, с которой я взаимодействую, хранит их как целые числа от 0 до 100.

Примечание. Я использую слово «целое число» для обозначения значений в диапазоне от 0 до 100, хотя эти значения могут содержать дробные компоненты (например, 25,75). Я не знаю, как еще описать разницу между двумя диапазонами процентных значений

Ответы [ 5 ]

26 голосов
/ 22 июля 2010

Я был бы склонен хранить их как 0 к 1, тогда при использовании числа в расчете не требуется скрытие.

Использование числа от 0 до 100 - больше способ отображения / читаемостисмотреть на номер.Когда вы отображаете процент, вы можете использовать String.Format("{0:P},percentage), который будет ожидать, что число будет между 0 и 1, но будет отображаться как 0 до 100.

3 голосов
/ 22 июля 2010

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

0 голосов
/ 22 июля 2010

Я думаю, что это тривиально ... оба одинаковы

Я имею в виду с точки зрения расчетов / отображения информации ...

00.50 is cool for calculations

50.00 is cool for displaying
0 голосов
/ 22 июля 2010

Вы можете использовать double для представления как процентов, так и 0-1. Но если вы решите хранить процент как «целое число», я бы посоветовал не использовать целые числа, что ограничит вас, например, если вы захотите представлять 12,3%.

0 голосов
/ 22 июля 2010

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

Если вы просто храните и представляете номер, то это действительно не имеет значения.

Какую математику вы планируете делать с этим номером, если есть?

...