首页 > 解决方案 > 将浮点数作为字符串并在 Bash 中进行算术运算

问题描述

我有以下 Bash 代码,它运行 C++ 二进制文件 ( ./code) 并存储结果:

#!/bin/bash

output=$(./code /);

read -ra arr -d '' <<<"$output" 
value=${arr[-1]}
sum=$value+1.034
echo $sum

我希望它能够获取变量 的值,该值sum是一个小于零的数字,即0.01357能够在将结果输出到屏幕之前向其添加另一个浮点数。

所以结果应该是 1.04757,但我目前得到的输出是:

0.01357+1.034

标签: bashshellsh

解决方案


Bash 不支持浮点运算。您需要另一个程序为您计算。
以下是使用bcawkGNU的三个示例datamash

#!/bin/bash

read -ra arr -d '' <<<"$(./code /)" 

# bc
printf '%s + %s\n' "${arr[-1]}"  "1.034" | bc

# or awk
#awk -v val="${arr[-1]}" 'BEGIN{print val + 1.034}'

# or datamash
#datamash sum 1 <<<$(printf '%s\n' "${arr[-1]}" "1.034")

推荐阅读