当前位置: 首页 > 面试题库 >

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

吕树
2023-03-14
问题内容

我发现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

有什么建议/建议吗?


问题答案:

您无法更改其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"


 类似资料:
  • 问题内容: 我有以下代码,该代码将数字字符串拆分(由空格分隔),然后创建一个float数组: 问题是字符串中的某些值使用科学计数法格式化-例如,它们读取为-3.04567E-8。 我想做的是最后得到一个不包含E号的浮点数。 问题答案: 下面是您的代码略有修改。按照我的说法,这很好用,实际上并不在乎他的指数顺序:

  • 问题内容: 我有一个类似的双精度数字,我需要把它显示为。 如何用Java做到这一点? 问题答案: 结果是 这是我最接近的。

  • 问题内容: 所以这很好用: 但是当处理更大的数字时,它不会打印: 有办法强制吗?也许使用numpy之类的东西。 问题答案: print ‘{0:.10f}’.format(1.0e-9) 文档中的字符串格式。

  • 问题内容: 我正在打印一个我不知道其值的数字。在大多数情况下,该数字为整数或结尾为0.5。在某些情况下,该数字以.25或.75结尾,而极少数情况下该数字达到千分之一。我该如何具体检测到最后一种情况?现在,我的代码检测到一个整数(0个小数位),精确地为0.5(1个小数位),然后在所有其他情况下恢复为2个小数点,但是当我需要这样做时,我需要将其改为3。 问题答案: A 使用二进制(IEEE 754)表

  • 我有功能: 我需要一个函数,在“number”参数-将接收一个小数,舍入到小数位数(缩放参数),并返回字符串中的结果。有人知道怎么做吗?

  • 我正在使用模式"#0.00##"来格式化数字,它可以像预期的那样为大多数输入工作。但有时源号较小(即:6.84378E-05),并被转换为"0,0001"。 是否有可能仅使用科学符号格式化这些数字(不符合标准模式)?保持所有“正常”数字不变?用单一模式。 我必须只使用一个DecimalFormal模式,没有任何额外的代码。 编辑:为了更好地解释为什么我需要单精度格式:我使用的是一个外部库,只能定义