С#: Хранение процентов, 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