【发布时间】:2017-03-04 13:11:47
【问题描述】:
我在 SQL Server 2008 R2 表中有一个类型为 float 的变量。我想为此存储 937687500 。我使用 C# 应用程序。
但在我存储数据后,我有 937687488。
我能做什么?
【问题讨论】:
标签: c# sql-server sql-server-2008-r2
我在 SQL Server 2008 R2 表中有一个类型为 float 的变量。我想为此存储 937687500 。我使用 C# 应用程序。
但在我存储数据后,我有 937687488。
我能做什么?
【问题讨论】:
标签: c# sql-server sql-server-2008-r2
这与 32 位浮点数的性质有关。当您输入非常高的数字时,浮点数将开始失去准确性。如果您改为使用 64 位浮点数,您将获得更高的精度,这将适用于这个特定的数字,但如果您打算插入非常大的数字,我建议您使用整数。
【讨论】:
money 数据类型。请注意 real 和 float 是近似数字 在此处阅读更多信息 Data Types (Transact-SQL)、float and real (Transact-SQL) 和 decimal and numeric (Transact-SQL)
你可以重铸你的花车
Declare @F float = 937687500
Select AsFloat = cast(@F as varchar(25))
,AsInt = cast(cast(@F as int) as varchar(25))
,AsDec = cast(cast(@F as decimal) as varchar(25))
,AsNum = cast(cast(@F as numeric) as varchar(25))
返回
AsFloat AsInt AsDec AsNum
9.37688e+008 937687500 937687500 937687500
【讨论】: