您可以使用以下方法进行浮点运算bc
:
SEK=$( echo " 6.32138 * $USD " | bc -l )
解释:
Bash 没有构建对浮点运算的支持。因此,我们通常使用程序来处理这些操作bc
。bc
从标准输入读取算术表达式作为字符串,并将结果打印到标准输出。请注意,该-l
选项对于保留表达式的小数部分是必需的。
为了从 中获取结果bc
并将其存储在变量中,我们使用命令重定向,即$(
)
. =
请注意,上一个表达式中的前后没有空格。
完整示例
#!/bin/bash
printf "%s\n" "USD-SEK Currency Convertor"
# Get the value to convert
read -p "Enter a USD: " USD
SEK=$(echo " 6.32138 * $USD " | bc -l )
printf "You will get SEK %s\n" "$SEK" ;# NOTE THAT I CHANGED THIS TO %s FROM %f DUE TO THE LOCALE SETTINGS
输出
$ ./converter.sh
USD-SEK Currency Convertor
Enter a USD: 10
You will get SEK 63.213800
请注意,我declare -i SEK
从脚本中删除了,因为SEK
变量不是整数
的危害declare -i
。此代码产生:
#!/bin/bash
declare -i SEK ;# WOOOPS I FORGOT THE declare -i
printf "%s\n" "USD-SEK Currency Convertor"
# Get the value to convert
read -p "Enter a USD: " USD
SEK=$(echo " 6.32138 * $USD " | bc -l )
printf "You will get SEK %s\n" "$SEK"
这个输出:
$ ./converter.sh
USD-SEK Currency Convertor
Enter a USD: 10
./converter.sh: line 6: 63.21380: syntax error: invalid arithmetic operator (error token is ".21380")
You will get SEK 0.000000