您好我正在特林产生使用以下代码击浮点和负值
设NUMBER1 = 0数字2 = flaoting点精度0运算符= +
printf "%0.2f\n" result=$((number1 $operator number2))
代码工作而不printf的但我无法弄清楚如何执行负( - )计算和浮点数?
您好我正在特林产生使用以下代码击浮点和负值
设NUMBER1 = 0数字2 = flaoting点精度0运算符= +
printf "%0.2f\n" result=$((number1 $operator number2))
代码工作而不printf的但我无法弄清楚如何执行负( - )计算和浮点数?
击不支持浮点运算,所以,无论你乘的数字由许多零操作为小数你想:
# 10.321 - 123.01
result=$((10321 - 123010))
echo ${result:0:-3}.${result:${#result} - 3}
或者干脆使用另一种工具来做到这一点,像bc
:
echo "scale=2; 10.321 - 123.01" | bc
此外,您使用的语法无效;你应该有:
printf "%0.2f\n" $((number1 $operator number2))
感谢您的信息,但结果是需要存储的interation - 印刷品“%0.2f \ n”$((number1 $ operator number2))不足够 –
@TrickyDicky:你的问题没有说明这个要求。解决方案是'res = $(printf“%0.2f \ n”$((n $ o n2)))''。祝你好运 – shellter
最后我想通了!
result=$(echo "scale=4; (($number1 $operator $number2))" | bc)
result = $(echo“scale = 4; $ number1 $ operator $ number2”| bc)< - 不需要括号 - 它们是多余的,因为没有操作顺序-MDAS--来覆盖。 $(())是一个bash构造。 –
bash变量是整数。 ksh可以使用'float'别名来声明浮点数,该别名可以扩展为'typeset -lE'。更好的方法是使用'awk',因为它有自然的浮点支持,或者如果你真的必须有'bash',你可以将'calc'放到'bc'中(这是一个外部过程,在典型的循环结构中花费很大) ,但在这里搜索的例子。如果你花时间阅读http://stackoverflow.com/faq,你会得到更好的帮助。有关awk的帮助,请阅读http://www.grymoire.com/Unix/Awk.html。祝你好运。 – shellter