开发者

C#: Storing percentages, 50 or 0.50?

开发者 https://www.devze.com 2023-01-08 13:21 出处:网络
When holding percentage values in variables is there a preference between holding them as whole numbers vs fractions.Th开发者_运维知识库at is should the variable hold numbers between 0 and 100 or betw

When holding percentage values in variables is there a preference between holding them as whole numbers vs fractions. Th开发者_运维知识库at is should the variable hold numbers between 0 and 100 or between 0.00 and 1.00? In either case, the variable holding the values is of decimal type.

The database I'm interacting with happens to store them as whole numbers 0 to 100.

Note: I'm using the word "whole number" to denote values in the range 0 to 100 though those values may contain fractional components (e.g., 25.75). I don't know how else to describe the difference between the two ranges of percentage values


I would be inclined to store them as 0 to 1, then there is no conversion required when using the number in a calculation.

Using a number between 0 and 100 is more of a display / readability way of looking at the number. When you are displaying the percentage you can use String.Format("{0:P},percentage) which will expect the number to be between 0 and 1 but will display as 0 to 100.


If you are using floating point fields (float, decimal, double), then 50.0 and 0.50 will have the same degree of precision. So, from this point, I would make decisions based on what similar fields in similar tables do, to give a sense of design unity.


If you are doing a lot of math with fractions, you want to store the numerator and denominator separately as whole numbers. When using fractions to represent repeating or non-repeating decimals you can get rounding errors that grow the more operations you have.

If you are just storing and presenting the number, then it really doesn't matter.

What math do you plan to do with this number, if any?


You can use doubles to represent both percentages and 0-1. But if you choose to store percentage as "whole number" I would advise against using integers, which would limit you if you ever want to represent 12.3%, for example.


I think this is trivial... both are the same

I mean in terms of calculations/displaying info...

00.50 is cool for calculations

50.00 is cool for displaying
0

精彩评论

暂无评论...
验证码 换一张
取 消