如何在Bazel中模拟float / double / real?

时间:2019-05-30 08:13:27

标签: floating-point bazel

挡板(0.26.0)不支持浮点类型,因为您可以阅读here

但是,我想计算一些神奇的(浮点数)数字,将它们存储在string中,如下所示:

def magicNumber():
    fileStr = ""
    count = 200
    for i in range(0, count-1):
        v = i / count
        fileStr += str(v) + " "

    return fileStr

我想使用仅Bazel功能来实现这一目标。对我来说很明显,我也可以将计算例如放在批处理/ shell脚本中,但我希望坚持使用仅Bazel的功能。任何想法如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

目前尚不清楚为什么要这么做。整数通常应该足够。

如果您想要的是序列“ 0.0 0.005 0.01 0.015 0.02 ... 0.995”,则可以这样操作:

def magic():
  fileStr = ""
  for i in range(0, 1000, 5):
    s = ("000" + str(i))[-3:] # Add leading 0s
    fileStr += "0.{} ".format(s.rstrip('0'))
  return fileStr

由于字符串不可更改,因此字符串上的+=将对其进行复制。为了提高性能(二次复杂度),建议不要循环执行此操作。相反,您可以将数据追加到数组并在最后加入。结果相同,除了没有尾随空格:

def magic():
  data = []
  for i in range(0, 1000, 5):
    s = ("000" + str(i))[-3:]
    data.append("0." + s.rstrip('0'))
  return " ".join(data)