C#:存储百分比,50 还是 0.50?
Posted
技术标签:
【中文标题】C#:存储百分比,50 还是 0.50?【英文标题】:C#: Storing percentages, 50 or 0.50? 【发布时间】:2011-03-19 06:21:51 【问题描述】:当在变量中保存百分比值时,在将它们保存为整数还是分数之间存在偏好。也就是说,变量应该保持 0 到 100 之间或 0.00 到 1.00 之间的数字吗?无论哪种情况,保存值的变量都是十进制类型。
我与之交互的数据库恰好将它们存储为 0 到 100 的整数。
注意:我使用“整数”一词来表示 0 到 100 范围内的值,尽管这些值可能包含小数部分(例如 25.75)。我不知道如何描述这两个百分比值范围之间的差异
【问题讨论】:
【参考方案1】:如果您使用浮点字段(float、decimal、double),则 50.0 和 0.50 将具有相同的精度。因此,从这一点开始,我会根据相似表中的相似字段所做的决定来做出决定,以给人一种设计统一感。
【讨论】:
嗯...在这种情况下,是的,但是10.0
与0.10
呢?完全不一样!
@Mark:你想指出什么?不同的存储形式将规定使用数字的不同方式。
我同意设计统一声明。浮点数 .50 与 50.00 的硬件表示可能会在数学运算中给出(显着?)不同的结果,甚至考虑到数量级的差异。
嗯?我试图指出.5
可以用二进制精确表示,但.1
不能。因此,将数字存储在 0-100 与 0-1 范围内是不完全一样的,因为后一种情况可能会导致严重的舍入错误...
.1 和 .5 作为浮点值具有相同的精度【参考方案2】:
我倾向于将它们存储为 0 到 1,然后在计算中使用数字时不需要转换。
使用 0 到 100 之间的数字更像是一种查看数字的显示/可读性方式。当您显示百分比时,您可以使用String.Format("0:P,percentage)
这将期望数字介于 0 和 1 之间,但将显示为 0 到 100。
【讨论】:
第二次。使用 0-1 范围内的百分比更容易......如果您想绘制进度条或类似的东西,通常只需将其乘以另一个数字,因此实际上不会有任何重大的舍入错误。 0-1 确实使数学运算更容易,如果您将 0.2 之类的值带入 Excel,您只需将单元格格式设置为百分比,它将显示为 20%【参考方案3】:如果您对分数进行大量数学运算,您希望将分子和分母分别存储为整数。当使用分数来表示重复或不重复的小数时,可能会出现舍入误差,随着运算次数的增加而增加。
如果你只是存储和呈现数字,那真的没关系。
如果有的话,你打算用这个数字做什么?
【讨论】:
【参考方案4】:您可以使用双精度数来表示百分比和 0-1。但是,如果您选择将百分比存储为“整数”,我建议您不要使用整数,例如,如果您想表示 12.3%,这会限制您。
【讨论】:
【参考方案5】:我认为这是微不足道的...两者都是一样的
我的意思是计算/显示信息...
00.50 is cool for calculations
50.00 is cool for displaying
【讨论】:
它们不一样,相差 100 倍!以上是关于C#:存储百分比,50 还是 0.50?的主要内容,如果未能解决你的问题,请参考以下文章