我目前正在尝试将价格输入到 .txt 文件中。
所以当用户输入时我想要它:1.1
而不是1.1
,我希望它变成1.10
。因为它对于我将来想做的桌子来说看起来会更好。如果小数点后三位以上,我还想向上或向下舍入。 (感谢 john1024 的指正)
答案1
要读取价格并强制其保留 2 位小数,请尝试:
IFS= read -rp "Enter the price: " var
printf -v var %.2f "$var"
该%.2f
格式指示printf
使用两位小数。
例子:
$ IFS= read -rp "Enter the price: " var; printf -v var %.2f "$var"; echo "var=$var"
Enter the price: 1.2
var=1.20
$ IFS= read -rp "Enter the price: " var; printf -v var %.2f "$var"; echo "var=$var"
Enter the price: 1.123
var=1.12
笔记:Bash 的printf
内置函数可以格式化带小数点的数字,但其算术表达式无法处理浮点数。为此,您将需要更高级的 shell,例如 ksh93、zsh 或 yash 或awk
或等工具bc
。