С#: Хранение процентов, 50 или 0.50?
При удерживании процентных значений в переменных есть предпочтение между их удерживанием как целыми числами и фракциями. То есть, если переменная удерживает числа от 0 до 100 или от 0,00 до 1,00? В любом случае переменная, содержащая значения, имеет десятичный тип.
База данных, с которой я взаимодействую, хранит их как целые числа от 0 до 100.
Примечание. Я использую слово "целое число" для обозначения значений в диапазоне от 0 до 100, хотя эти значения могут содержать дробные компоненты (например, 25.75). Я не знаю, как еще описать разницу между двумя диапазонами процентных значений
Ответы
Ответ 1
Я был бы склонен хранить их как от 0 до 1, тогда нет необходимости в coversion при использовании числа в расчете.
Использование числа от 0 до 100 - это больше, чем просмотр/просмотр данных. Когда вы показываете процент, вы можете использовать String.Format("{0:P},percentage)
который будет ожидать, что число будет от 0 до 1, но будет отображаться как от 0 до 100.
Ответ 2
Если вы используете поля с плавающей запятой (float, decimal, double), то 50.0 и 0.50 будут иметь одинаковую степень точности. Итак, с этого момента я буду принимать решения, основанные на том, что аналогичные поля в подобных таблицах делают, чтобы дать ощущение единства дизайна.
Ответ 3
Если вы делаете много математики с фракциями, вы хотите сохранить числитель и знаменатель отдельно как целые числа. При использовании фракций для представления повторяющихся или не повторяющихся десятичных знаков вы можете получить ошибки округления, которые увеличивают больше операций, которые у вас есть.
Если вы просто сохраняете и представляете номер, то это действительно не имеет значения.
Какую математику вы планируете делать с этим номером, если таковые имеются?
Ответ 4
Вы можете использовать удвоения для представления обоих процентов и 0-1. Но если вы решите сохранить процент как "целое число", я бы посоветовал использовать целые числа, что ограничило бы вас, если вы когда-нибудь захотите представить 12,3%, например.
Ответ 5
Я думаю, что это тривиальный... оба одинаковы
Я имею в виду вычисления/отображение информации...
00.50 is cool for calculations
50.00 is cool for displaying