【问题标题】:Define float type in SQL Server table在 SQL Server 表中定义浮点类型
【发布时间】:2017-03-04 13:11:47
【问题描述】:

我在 SQL Server 2008 R2 表中有一个类型为 float 的变量。我想为此存储 937687500 。我使用 C# 应用程序。

但在我存储数据后,我有 937687488。

我能做什么?

【问题讨论】:

    标签: c# sql-server sql-server-2008-r2


    【解决方案1】:

    这与 32 位浮点数的性质有关。当您输入非常高的数字时,浮点数将开始失去准确性。如果您改为使用 64 位浮点数,您将获得更高的精度,这将适用于这个特定的数字,但如果您打算插入非常大的数字,我建议您使用整数。

    【讨论】:

    • 非常感谢。但是如何更改为 64 位浮点数。我在sql中找不到它。金额字段属性大小为 8 并禁用
    • 我建议查看stackoverflow.com/a/626904/6623706。您要更改为的数据类型是 real
    • 非常感谢。我将其更改为 real 但数据库存储中的值 1.766554E+10 。是科学数字。你能帮帮我吗?
    • 我怀疑这是一个货币价值。如果是这种情况,您应该使用money 数据类型。请注意 realfloat 是近似数字 在此处阅读更多信息 Data Types (Transact-SQL)float and real (Transact-SQL)decimal and numeric (Transact-SQL)
    • 我使用 bigint。非常感谢
    【解决方案2】:

    你可以重铸你的花车

    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
    

    【讨论】:

    • 非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多