将输入字段设置为 2 位小数(价格)

将输入字段设置为 2 位小数(价格)

我目前正在尝试将价格输入到 .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

相关内容