Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server浮动列正在删除.00_Sql_Sql Server_Types - Fatal编程技术网

SQL Server浮动列正在删除.00

SQL Server浮动列正在删除.00,sql,sql-server,types,Sql,Sql Server,Types,我们有一个客户机数据库,它对列使用浮点数据类型。如果我在其中插入55.01就可以了,但是如果插入的值是55.00,它会删除.00。有人知道我如何阻止它这样做吗?理想情况下,他们不希望更改数据库。我可以对这个查询做些什么来修复它吗 Insert into print_receipt (box_number) values (55.00) 如果您只需要一个尾随的00,则无需更改数据库,因为它已经准确无误 更改您的演示层,或者只需在选择中添加一个演员阵容: 选择CAST(CAST(55.00作为浮点

我们有一个客户机数据库,它对列使用浮点数据类型。如果我在其中插入55.01就可以了,但是如果插入的值是55.00,它会删除.00。有人知道我如何阻止它这样做吗?理想情况下,他们不希望更改数据库。我可以对这个查询做些什么来修复它吗

Insert into print_receipt (box_number) values (55.00)

如果您只需要一个尾随的
00
,则无需更改数据库,因为它已经准确无误

更改您的演示层,或者只需在
选择中添加一个演员阵容:


选择CAST(CAST(55.00作为浮点)作为十进制(10,2))

如果您只需要一个尾随
00
,则无需更改数据库,因为它已经是精确的

更改您的演示层,或者只需在
选择中添加一个演员阵容:


选择CAST(CAST(55.00作为浮点)作为十进制(10,2))

听起来更像是一个显示问题,而不是数据库问题。我同意,55.00和55的值是相同的请注意,对于浮点,某些值不能准确表示(例如,
.1
)。这就是为什么您从不在float/double字段中存储“money”金额(使用decimal或int),尽管这似乎不是问题所在。但是,如果您试图使用远远超出“精确”范围的值,这仍然会成为一个问题;如果输入数字不能准确表示,它将被修改为可表示的值。听起来更像是显示问题而不是数据库问题。我同意,55.00和55的值是相同的。请注意,对于浮点,某些值不能准确表示(例如,
.1
)。这就是为什么您从不在float/double字段中存储“money”金额(使用decimal或int),尽管这似乎不是问题所在。但是,如果您试图使用远远超出“精确”范围的值,这仍然会成为一个问题;如果输入的数字不能准确表示,它将被修改为一个可表示的值。这是一个例子,因为他的数据已经是一个浮点数。这是一个可运行的示例,而不是
SELECT CAST(您的floatfield为十进制(10,2))
谢谢,我通过表示层对其进行了更改以使其正常工作。sql server删除浮点字段上的.00似乎真的很奇怪。因为它不是我们的数据库,我们不允许更改它,所以我不能简单地将该列设置为varchar/text字段。@Nathan-请记住,在幕后,
float
是一种类似于
5*10^1
的乘法-如果可能是有效数字,它将以最少的数字显示。如果小数位数对您来说很重要,您需要切换到存储小数。如果使用float,它们将永远不会被存储。这个答案只会让你始终显示两位小数,而不是实际保存的金额。这是一个例子,因为他的数据已经是一个浮点。这是一个可运行的示例,而不是
SELECT CAST(您的floatfield为十进制(10,2))
谢谢,我通过表示层对其进行了更改以使其正常工作。sql server删除浮点字段上的.00似乎真的很奇怪。因为它不是我们的数据库,我们不允许更改它,所以我不能简单地将该列设置为varchar/text字段。@Nathan-请记住,在幕后,
float
是一种类似于
5*10^1
的乘法-如果可能是有效数字,它将以最少的数字显示。如果小数位数对您来说很重要,您需要切换到存储小数。如果使用float,它们将永远不会被存储。这个答案只会让您始终显示两位小数,而不是实际保存的金额。