我在做一些非常简单的数学和结果保存到MS SQL2008数据库。

平均出一些数字,它们是1之间的字节值< - > 5。我想大概只记录2位小数。我不关心有关舍入为第二小数位(例如,一个1.155 == 1.5或1.6 ..我不太相控)。

所以..我应该存储的平均结果作为浮动,小数或双倍?

当我检查什么LINQ返回,它可以返回三个值!

最后,这将是相关的SQL数据类型字段,也。

喝彩!

有帮助吗?

解决方案

您需要的是十进制数据类型:

declare @val decimal(10,2)
select @val = 10.155
select @val

当你输入值,你可以依靠内置的舍入,或明确地决定你想要的四舍五入:

select val = round(10.155, 2, 0) -- rounded
select val = round(10.155, 2, 1) -- truncated

十进制(10,2)表示十位数字可以被使用,并且它们中的两个将被取作为小数点后之中。即该小数(4,2)可以包含最高数目为99.99。试图将其设定为100将导致算术溢出。

其他提示

我会选择浮动的两倍以上,可能比浮动小数点:。 ID去Floatalthough都应该给予同样的结果。

看一看这两个页面的花车&的小数

十进制主要用于货币。虽然它的工作,人们可能会觉得混乱。在这种情况下,我认为浮动将是一个更好的选择。

十进制 - 这是最简单的,但是任何mentined的会做的工作。

如果你想储存使用尽可能少的空间尽可能的结果,你大概可以做这样的事情(伪):

integer = ( sum(all_values) / all_values.count().float ) * 100;

这会给你值352,其平均值为3.52,所以你可以将它存储为一个整数(字节就足够我猜大),只是由100时要显示它划分它。

在另一方面,如果你不关心平均值的存储,使用浮动值是可能更快。 (同时测试,看看什么是真正的最快您的系统上。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top