Bash 小数点与小数乘法

Bash 小数点与小数乘法,bash,shell,decimal,multiplication,Bash,Shell,Decimal,Multiplication,因此,当用户输入一个4位数的数字,如4750,程序必须将该数字的两位小数转换为47.50美元。这将以美分存储在成本中。这是我到目前为止的代码,它只是计算。这些消息已经在另一个功能中打印出来了,我只需要帮助用十进制数字编码计算 #!/usr/bin/env bash Percent=20 Numguests=DO_NOT_CHANGE # number of elements in ${GUESTS} Limit=DO_NOT_CHANGE # $num_guest

因此,当用户输入一个4位数的数字,如4750,程序必须将该数字的两位小数转换为47.50美元。这将以美分存储在成本中。这是我到目前为止的代码,它只是计算。这些消息已经在另一个功能中打印出来了,我只需要帮助用十进制数字编码计算

#!/usr/bin/env bash
 Percent=20
 Numguests=DO_NOT_CHANGE     # number of elements in ${GUESTS}
 Limit=DO_NOT_CHANGE          # $num_guests * $BUDGET_PER_PERSON
 Cost=DO_NOT_CHANGE           # prompt user
 Tip=DO_NOT_CHANGE            # $cost * $percent%
 Totalcost=DO_NOT_CHANGE      # $cost + $tip
 Averagecost=DO_NOT_CHANGE   # $overall_cost / $num_guests

function calc {
echo -n "What is the total cost in cents (not including tip)? ";
read cost_in_cents 
Numguests=8
Limit=$((8 * 25))
Cost=$cost_in_cents  #needs to convert into decimal
Tip=$(($Cost * $Percent)) #needs to be in decimal
Overall_cost=$(($Cost + $Tip)) #needs to have decimal
Average_cost=$(($Totalcost /8)) #needs to be in decimal
}

我如何将成本(单位:美分)换算成两位小数(因此,如果数字是4315,则换算成43.15美元,如果数字是50,则实际为0.50美元),并将其相乘而不进行四舍五入

你可以在卑诗省进行数学运算,但即使是在awk:

$ cost="3444"
$ cost2=$(awk '{print $0/100}' <<<"$cost")
$ echo "$cost ==> $cost2"
3444 ==> 34.44
$cost=“3444”

$cost2=$(awk'{print$0/100}'您可以在
awk
中直接执行此操作和许多其他计算。以下是一个示例

value=4315; cost=$(awk "BEGIN{print $value/100}"); echo $cost

43.15

如果你想控制十进制数变为“%.2f\n\”,$value/100

除以100…当我除以100时,它给出了这个/:是一个目录成本=$Cost\u in_cents/100,它已经在另一个函数中打印出来了,我无法更改。因为echo“/你的代码”能把它打印出来吗?等等让我check@BobBASH不是做浮点运算的最佳方法,它倾向于以不希望的方式环绕事物;还有其他工具,你可能需要考虑……比如<代码> AWK < /代码>。14秒的差异!难以置信!替代品是好的。有没有办法确保它总是两个小数点?如果输入2000,它将输出20,而不是20.00,或者与百分比相乘,它将输出23.4而不是23.40。为了保持小数点后两位不变,它有时甚至会给我最多5位小数。请查看我的其余答案,将打印语句替换为备选语句好的,谢谢,我会尝试!