1

我需要在 SQL Server 中存储以下双精度值:

double x = 52.22105994970536;

我应该使用什么 SQL Server 数据类型来存储这种类型的值。也许decimalfloat

我不确定这是否相关,但我需要用 a .not a存储这些值,以分隔值的小数部分。SQL Server 中是否有我应该注意的设置以确保发生这种情况?

4

2 回答 2

1

我不确定这是否相关,但我需要用 . 不是 a ,用于分隔值的小数部分。SQL Server 中是否有我应该注意的设置以确保发生这种情况?

不,学习编程到你意识到这根本不是问题的程度就足够了——小数存储为小数。“。” 或“,”是用于打印值的视觉转换(可以说是“ToString”调用)的一部分,与该值无关。

如果要存储双倍,则要存储双倍。观点。如果您想确保您的程序以“.”显示它,那么请正确编程 UI,但不要打扰 SQL Server 内部存储。通常它们显示在语言环境中 - 在大多数情况下,这比硬编码更智能。所以,也许你强制更改 UI 区域设置?或者硬编码转换以在每次打印出值时应用。

我应该使用什么 SQL Server 数据类型来存储这种类型的值。也许十进制或浮点数?

http://msdn.microsoft.com/en-us/library/ms187752.aspx

解释sql server的数据类型。

选择一个符合您要求的。可能是具有给定精度的浮点版本。现在,如果您害怕,因为它们被命名为“近似数字”,请注意 double 是近似数字,在 C#(或您使用的任何其他前端语言 - 您不要告诉我们)中也是如此。

默认推荐的映射位于http://msdn.microsoft.com/en-us/library/ms131092.aspx并指向“浮动”。

于 2012-07-09T11:02:02.923 回答
0

正如 Damien_The_Unbeliever 所说,格式化是(应该是无关紧要的)格式化是您为显示、报告等所做的事情。

至于是使用浮点还是定点(十进制),如果您用来访问它的语言具有十进制类型,十进制可以解决很多问题。如果您将数字操作为双精度数,那么在后端使用小数不会给您那么多,因为您仍将手动处理浮点表示固有的不准确性。

于 2012-07-09T11:00:47.043 回答