【问题标题】:why is power(2.0, 1/2) = 1.0?为什么power(2.0, 1/2) = 1.0?
【发布时间】:2017-05-01 17:39:26
【问题描述】:

上述查询在 MS 服务器中给出 1.0 作为输出。但它给出了 1.4 的功率(2.0,1.0/2)。如果有人解释它的原因,我真的很感激。 提前致谢!

【问题讨论】:

标签: sql sql-server


【解决方案1】:

1/2 使用整数除法,结果为零。二的零次方是一。

【讨论】:

  • 为了得到1.4,有什么变化?
  • @SajithHerath 您需要将至少一个除数设为浮点数。所以试试power(2.0, 1.0/2)power(2.0, 0.5)
  • 更令人惊讶的是power(2.0, 0.5) 的结果是1.4,而不是 2 的平方根的更准确的近似值——记录了为什么会这样(输出转换为输入的类型)但并不明显,因为POWER 名义上是一个在float 表达式上运行的函数。
  • 比较POWER(2e0, 0.5),其中第一个操作数实际上是FLOAT,而不是DECIMAL(2,1)
【解决方案2】:

因为 1 和 2 是整数,所以结果转换为整数。就像 CAST(0.5 AS INT) = 0

如果其中至少有一个具有“1.0/2”或“1/2.0”或“1.0/2.0”之类的小数,则结果转换为小数,结果将为 0.5。

【讨论】:

    猜你喜欢
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多