【问题标题】:Kusto range query in Azure Data Explorer not using even stepsAzure 数据资源管理器中的 Kusto 范围查询不使用偶数步骤
【发布时间】:2021-04-22 11:40:52
【问题描述】:

这个查询

range x from -1 to 1 step 0.2
| project x

产生这个结果。这可能是正确的吗?

【问题讨论】:

    标签: azure-data-explorer kql


    【解决方案1】:

    是的,根据提供的值推断的类型是double (real),它是一个浮点数。如果您想查看精确的数字,请使用小数类型,例如:

    range x from decimal(-1) to decimal(1) step decimal(0.2)
    

    【讨论】:

      【解决方案2】:

      不能期望使用带有浮点数的数字是 100% 精确的。

      我写了一个快速的 C 程序,它以float f = 0.0f 开头,然后运行f += 0.1 100 次,同时每 10 次迭代打印一次 f,结果是:

      1.000000
      2.000000
      2.999999
      3.999998
      4.999998
      5.999997
      6.999996
      7.999995
      8.999998
      10.000002
      

      你可以看到/修改/运行看到我在这里写的代码:https://onlinegdb.com/HyylownHd

      精度不足可能不仅发生在算术计算中,还可能发生在将浮点数转换为字符串的代码中(在层之间传递或在打印之前传递)。

      正如@avnera 建议的那样,使用decimal 确实可以提供更好的精度,但您仍然不应该期望它是100% 的精度。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多