在C#和SQL Server中,我应该使用什么类型来表示百分比?

时间:2020-03-06 14:59:25  来源:igfitidea点击:

我在想漂浮。出于记录,我也使用NHibernate。

解决方案

十进制

舍入不会使我们失去精度。

这取决于我们需要的准确性。如果我们不需要任何小数位,我们甚至可以使用tiny int。但是通常,如果需要一些小数位,则浮点数会很好。我使用LLBLGen并浮动了%

这取决于我们使用它们的目的。

如果用于显示,则int会很好,并且比float快。如果它是用于不常用的数学,则int仍然可以做得很好(在任何情况下都可以是简短的结果)。

如果我们要进行大量数学运算,那么就性能而言,浮点数可能是最好的。

当然,除非我们要对百分比进行大量操作,否则在给定现代处理器速度的情况下,从性能角度来看,最终实际上并没有关系。

编辑:当然," int"假设我们只是使用严格的整数百分比。如果不是这样,使用float或者dec总是会更好。

关于SQL Server,很少会存储一个百分比。我们要存储十分之九的数据,该数据用于导出百分比并根据需要进行计算。

当且仅当我们有经验数据表明计算速度太慢时,才进行存储。如先前建议的那样使用小数,以避免舍入问题。

这在很大程度上取决于我们需要多少精度。最重要的是保持一致和清晰。采取预防措施以确保在整个字段的使用中保持一致。.即,不要将其存储为浮点数(n = .5),然后尝试重新构造它,就好像它是代码的另一部分中的整数(mypercentage = n / 100)。只要我们确保不这样做,并且我们没有制造需要30个有效数字精度的激光器,就可以在int,double或者任何漂浮在船上的东西之间选择自己喜欢的口味。瓦卡瓦卡瓦。

答案取决于应用程序。

其他人指出,十进制比表示精确值的浮点数更好。但是有时最好使用浮点数来提高精度(例如,一组计算得出的权重之和等于100%可能会更好地表示为浮点数)