计算bash中的平方根到小数位

问题描述 投票:0回答:1

我正在编写一个简单的bash脚本,默认情况下计算平方根为小数点后3位,但用户可以设置位数。没什么复杂的,我只是从1迭代到最低平方根。由于我的重击仍然很基本,所以这就是我想出的。

#!/usr/bin/env bash

num=${1}
places=${2-3}
i=0

while [[ $(( i*i )) -lt ${num} ]]
do
    i=$(( i + 1 ))
done

echo ${i};
rem=$(( num % i ))
root="${i}."
for (( j=0; j<places; j++ ))
do
    rem=$((rem * 10))
    root="$root$((rem / i))"
    rem=$((rem % i))
done
echo ${root}

但是由于某些原因,它不能对许多数字产生正确的结果像bashfile.sh 9 // will produce 3 but bashfile.sh 8 will return 3.666的帮助一样,while [[ ]]

怎么了?
bash decimal-point square-root
1个回答
0
投票

Bash不支持小数。您应该使用bc或将所有内容乘以100,然后再除以100。

© www.soinside.com 2019 - 2024. All rights reserved.