2

我有input_file

{"hi":48.0, "yep":48.123}

我运行这个

jq . < input_file > output_file
cat output_file

我的输出:

{
  "yep": 48.123,
  "hi": 48
}

我希望输出是

{
  "yep": 48.123,
  "hi": 48.0
}

如何防止 jq 自动将我的 double 值转换为 int?

4

1 回答 1

2

jq 将数字解析为 C 双精度数。然后它将它们格式化为数字。这种转换在两个方面是有损的:a) 有很多方法可以表示相同的数字,但 jq 只使用一种,没有其他选择,b) C 双精度数有限。

关于这两个问题都有针对 jq 的问题。可能的解决方案是采用 bignum/bigfloat 方法,并保持通过未修改的数字的原始数字字符串(实际上;jq 将所有数据视为写入时复制)。但这还没有实现。

于 2014-06-19T20:09:31.387 回答