一尘不染

jq用科学计数格式重新格式化小数位-是否可以避免?

json

我发现JavaScipt和通过jqbash(和其他编程语言)创建的json-
data之间存在差异。使用JavaScript,即使使用,我也可以创建最多六位的十进制数字float()。但是与jq它不同,因为添加十进制值只需要在小数点后四位数字。

我的问题是我需要十进制数字存储在SQL中,该点后最多六位数字。

例:

$ JSON='{"decimal":0.00001}'
$ echo "$JSON" | jq .
{
  "decimal": 1e-05
}

我的目标是用此行验证小数点…

if [[ "$TMP_DECIMAL" =~ ^[0-9]+([.][0-9]+)?$ ]] ; then

有什么建议/建议吗?


阅读 345

收藏
2020-07-27

共1个答案

一尘不染

您无法更改其jq行为-目前,相关功能请求仍处于打开状态-但您
可以 在检索到数字后重新格式化它们。例如:

json='{"decimal":0.00001}'
decimal=$(jq '.decimal' <<<"$json")
decimal_f=$(awk -v decimal="$decimal" 'BEGIN { printf("%f\n", decimal) }' </dev/null)

echo "JQ emitted $decimal; reformatted as $decimal_f"
2020-07-27