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

时间:2014-05-10 00:35:26

标签: json jq

我有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?

1 个答案:

答案 0 :(得分:2)

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

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