【发布时间】:2011-03-19 06:21:51
【问题描述】:
当在变量中保存百分比值时,在将它们保存为整数还是分数之间存在偏好。也就是说,变量应该保持 0 到 100 之间或 0.00 到 1.00 之间的数字吗?无论哪种情况,保存值的变量都是十进制类型。
我与之交互的数据库恰好将它们存储为 0 到 100 的整数。
注意:我使用“整数”一词来表示 0 到 100 范围内的值,尽管这些值可能包含小数部分(例如 25.75)。我不知道如何描述这两个百分比值范围之间的差异
【问题讨论】:
当在变量中保存百分比值时,在将它们保存为整数还是分数之间存在偏好。也就是说,变量应该保持 0 到 100 之间或 0.00 到 1.00 之间的数字吗?无论哪种情况,保存值的变量都是十进制类型。
我与之交互的数据库恰好将它们存储为 0 到 100 的整数。
注意:我使用“整数”一词来表示 0 到 100 范围内的值,尽管这些值可能包含小数部分(例如 25.75)。我不知道如何描述这两个百分比值范围之间的差异
【问题讨论】:
如果您使用浮点字段(float、decimal、double),则 50.0 和 0.50 将具有相同的精度。因此,从这一点开始,我会根据相似表中的相似字段所做的决定来做出决定,以给人一种设计统一感。
【讨论】:
10.0 与0.10 呢?完全不一样!
.5 可以用二进制精确表示,但.1 不能。因此,将数字存储在 0-100 与 0-1 范围内是不完全一样的,因为后一种情况可能会导致严重的舍入错误...
我倾向于将它们存储为 0 到 1,然后在计算中使用数字时不需要转换。
使用 0 到 100 之间的数字更像是一种查看数字的显示/可读性方式。当您显示百分比时,您可以使用String.Format("{0:P},percentage)
这将期望数字介于 0 和 1 之间,但将显示为 0 到 100。
【讨论】:
如果您对分数进行大量数学运算,您希望将分子和分母分别存储为整数。当使用分数来表示重复或不重复的小数时,可能会出现舍入误差,随着运算次数的增加而增加。
如果你只是存储和呈现数字,那真的没关系。
如果有的话,你打算用这个数字做什么?
【讨论】:
您可以使用双精度数来表示百分比和 0-1。但是,如果您选择将百分比存储为“整数”,我建议您不要使用整数,例如,如果您想表示 12.3%,这会限制您。
【讨论】:
我认为这是微不足道的...两者都是一样的
我的意思是计算/显示信息...
00.50 is cool for calculations
50.00 is cool for displaying
【讨论】: