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

我应该使用什么类型来表示C#和SQL Server中的百分比?,c#,sql-server,C#,Sql Server,我在想浮子。作为记录,我还使用了NHibernate。decimal 您不会因为舍入而失去精度。这取决于您需要的精度。如果你不需要任何小数点,你甚至可以使用极小的int。但是如果你需要一些小数点,通常浮点是好的。我使用LLBLGen和float表示%的这取决于您使用它们的目的 如果是为了显示,int可以做得很好,并且比float快。如果是针对不经常使用的数学,int仍然可以很好地使用(在任何一种情况下,甚至是短的) 如果你做了大量的数学运算,那么从性能角度来看,浮点可能是最好的 当然,除非你对百

我在想浮子。作为记录,我还使用了NHibernate。

decimal


您不会因为舍入而失去精度。

这取决于您需要的精度。如果你不需要任何小数点,你甚至可以使用极小的int。但是如果你需要一些小数点,通常浮点是好的。我使用LLBLGen和float表示%的

这取决于您使用它们的目的

如果是为了显示,int可以做得很好,并且比float快。如果是针对不经常使用的数学,int仍然可以很好地使用(在任何一种情况下,甚至是短的)

如果你做了大量的数学运算,那么从性能角度来看,浮点可能是最好的

当然,除非你对百分比做了大量的操作,否则考虑到现代处理器的速度,从性能角度来看,这最终不会有什么影响


编辑:当然,“int”假定您只使用严格的整数百分比。如果不是,使用float或dec总是会更好。

关于SQL Server,我很少存储百分比。10次中有9次您希望存储用于导出百分比并根据需要进行计算的数据


如果且仅当你有经验数据表明计算速度太慢,那么就继续存储它。如前所述,使用小数点以避免四舍五入问题。

这在很大程度上取决于您需要的精度;最重要的是保持一致和清晰。采取预防措施,确保您在整个领域的使用保持一致。。i、 e.不要将其存储为浮点(n=0.5),然后尝试将其重新组合为代码另一部分中的整数(mypercentage=n/100)。只要您确保不这样做,并且您没有制造需要30个有效数字精度的激光器,只需在int、double或任何漂浮在船上的东西之间选择您最喜欢的味道。哇哇

答案取决于应用程序


其他人指出,十进制在表示精确值方面优于浮点。但有时为了提高精度,最好使用浮点数(例如,一组加起来为100%的计算权重可能更好地表示为浮点数)

这可能是特定于域的。很多时候,你不会有计算百分比的数据,比如用户输入要使用的颜色百分比,正如@mattlant所说,我需要存储的百分比是域百分比,比如17.5%增值税和40%折扣等。稍后遇到这个问题,我发现这个答案比问题的SQL Server部分更有用:。答案似乎是decimal作为CLR类型,float作为SQL Server类型,至少如果您可能存储分数百分比的话。。。你也会说整数更快,但也会说浮点数对性能更好。@StuartBranham:如果你注意到了,我给出了两种情况都是正确的。百分比可以存储为int(75,表示75%)或float(.75,表示75%,或75.5,表示75.5%,或.755,表示75.5%)。对于简单的存储和显示,int更快。若你们需要处理数字,浮点数是最好的——你们可以存储小数位,并且有内置的数学函数使它非常有效。