Shell KSH数学运算不返回十进制结果,而是返回0

Shell KSH数学运算不返回十进制结果,而是返回0,shell,unix,ksh,Shell,Unix,Ksh,我正在写一个脚本,需要计算一些数字。 其中一部分是百分比计算,这是我的主要问题。 我有两个数字:num1=272700和num2=2592000。 我需要计算num1/num2*100 percentage=$((($num1/$num2)*100)) echo $percentage Result: 0. 如果我这样做了 num3=$(($num1/$num2)) echo $num3 Result:0 我期望的结果是:10.52%很大程度上取决于您的ksh版本 在您的操作系统上搜索支持

我正在写一个脚本,需要计算一些数字。 其中一部分是百分比计算,这是我的主要问题。 我有两个数字:num1=272700和num2=2592000。 我需要计算num1/num2*100

percentage=$((($num1/$num2)*100))
echo $percentage

Result: 0.
如果我这样做了

num3=$(($num1/$num2))
echo $num3
Result:0

我期望的结果是:10.52%

很大程度上取决于您的ksh版本

在您的操作系统上搜索支持浮点运算的ksh93,有时除了旧的ksh之外还有ksh93,如果有ksh93,您可以将其放在脚本的开头/bin/ksh93或/usr/bin/ksh93或任何正确路径或用途!环境ksh93等

ksh的更高版本支持浮点运算。默认情况下,所有算术都是整数,除非您在声明变量时告诉它使用浮点算术

如果且仅当您的ksh版本比11/16/88版本更新,则接受以下语法:

typeset -F num1=272700 num2=2592000
typeset -F2 percentage
(( percentage = (num1/num2)*100))
echo $percentage
在合适版本的ksh上运行时,这将产生10.52


如果您的ksh版本不支持上述浮点运算,那么您可以使用bc或awk或其他工具来完成这项工作,从而导致性能损失。

很大程度上取决于您的ksh版本

在您的操作系统上搜索支持浮点运算的ksh93,有时除了旧的ksh之外还有ksh93,如果有ksh93,您可以将其放在脚本的开头/bin/ksh93或/usr/bin/ksh93或任何正确路径或用途!环境ksh93等

ksh的更高版本支持浮点运算。默认情况下,所有算术都是整数,除非您在声明变量时告诉它使用浮点算术

如果且仅当您的ksh版本比11/16/88版本更新,则接受以下语法:

typeset -F num1=272700 num2=2592000
typeset -F2 percentage
(( percentage = (num1/num2)*100))
echo $percentage
在合适版本的ksh上运行时,这将产生10.52

如果您的ksh版本不支持上面提到的浮点运算,那么您可以使用bc或awk或其他工具来完成这项工作,从而导致性能下降。

只需尝试:

$ awk -v n1=$num1 -v n2=$num2 ' BEGIN { print n1/n2*100 } '
10.5208

只需尝试:

$ awk -v n1=$num1 -v n2=$num2 ' BEGIN { print n1/n2*100 } '
10.5208


大概谢谢你的更正!:大概谢谢你的更正!:不幸的是,我猜ksh版本不支持浮点。但我已经设法使它与awk一起工作。谢谢不幸的是,我猜ksh版本不支持浮点。但我已经设法使它与awk一起工作。非常感谢。