【问题标题】:T-SQL: Convert money to floatT-SQL:将钱转换为浮动
【发布时间】:2018-01-29 08:09:39
【问题描述】:

如何将(money/int)*100 转换为float 数据类型?

a.ResidualValuemoney 类型,而 ListPriceCarint 类型。

以下输出一个带有逗号作为小数分隔符的数字,所以我认为它仍然是money 字段,而不是我希望的float

CONVERT(float, CONVERT(float, REPLACE(CONVERT(nvarchar(10), a.ResidualValue), ',', '.'))/ListPriceCar)*100 AS 'Residual value %'

结果:62,825

【问题讨论】:

  • 请向我们展示一些示例数据,包括预期结果和实际结果。

标签: sql-server tsql type-conversion


【解决方案1】:

下面的简单转换有什么问题:

DECLARE @money AS money
SET @money = $2345234.35
SELECT @money, CAST(@money AS float)

【讨论】:

    【解决方案2】:

    ResidualValue 的值是多少?如果 ResidualValue 包含逗号,则逗号是您的十进制字符。你不应该把它转换成一个点。您可以将货币值除以 int 值。

    declare @a money = 10.5;
    declare @b int = 20;
    
    select (@a / @b) * 100
    select cast((@a / @b) * 100 as float)
    

    【讨论】:

      【解决方案3】:

      在您的示例中,结果已经作为浮点数给出。您可以通过运行以下示例代码对此进行测试。

      --INPUT VARIABLES
      declare @ResidualValue money = 5000.54
      declare @ListPriceCar int = 15000
      --OUTPUT VARIABLE
      declare @ResultCalculation as sql_variant;
      --CALCULATION
      set @ResultCalculation = CONVERT(float, CONVERT(float, REPLACE(CONVERT(nvarchar(10), @ResidualValue), ',', '.'))/@ListPriceCar)*100 
      --GET INFORMATION ON THE OUTPUT VARIABLE
      select sql_variant_property(@ResultCalculation,'BaseType') AS 'Base Type',
             sql_variant_property(@ResultCalculation,'Precision') AS 'Precision',
             sql_variant_property(@ResultCalculation,'Scale') AS 'Scale',
             sql_variant_property(@ResultCalculation,'TotalBytes') AS 'TotalBytes',
             sql_variant_property(@ResultCalculation,'Collation') AS 'Collation',
             sql_variant_property(@ResultCalculation,'MaxLength') AS 'MaxLength';
      

      有一种更简单的方法来计算你的答案:

      CAST(@ResidualValue/@ListPriceCar * 100 as float)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-08
        • 1970-01-01
        • 2011-02-28
        • 1970-01-01
        • 1970-01-01
        • 2012-11-27
        • 2010-12-02
        相关资源
        最近更新 更多