is JQ Transform modifying numbers? How can I get past it?

冷暖自知 提交于 2019-12-02 17:04:45

问题


Why this ("Filter" in jqplay.org): {"key":633447818234478180}

returns this ("Result" in jqplay.org): {"key": 633447818234478200}

Original JSON doesn't matter.

Why is it changing 180 into 200? How can I overcome this? Is this a bug? A number too big?


回答1:


I believe this is because jq can only represent legal JSON data and the number you've given is outside the range that can be represented without loss of precision. See also

  • What is JavaScript's highest integer value that a number can go to without losing precision?

If you need to work with larger numbers as strings in jq you may want to try this library:

  • jq-bigint
    A big integer library for working with possibly-signed arbitrarily long decimal strings. Written by Peter Koppstein (@pkoppstein) and released under the MIT license.


来源:https://stackoverflow.com/questions/47397088/is-jq-transform-modifying-numbers-how-can-i-get-past-it

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!