我看到this SO answer显示了如何删除Bash中字符串中某个字符之后的所有文本。有了这些信息,我可以执行以下操作来舍入一个数字:
NUMBER=10.12345
NUMBER=${NUMBER%.*} # 10
但是,我想保留小数点后两位。如何使10.12345
成为10.12
?我不需要适当舍入,只需修剪即可。在运行${NUMBER%.*}
时也许带有通配符?
答案 0 :(得分:7)
您可以使用printf
对浮点数进行四舍五入。尝试printf "%.2f" "${NUMBER}"
。您也可以将值保存到变量中:printf -v myvar "%.2f" "${NUMBER}"
。
答案 1 :(得分:1)
使用=~
运算符:
$ num=10.12345
$ [[ $num =~ ^[0-9]*(.[0-9]{1,2})? ]] && echo $BASH_REMATCH
10.12
$ num=10
$ [[ $num =~ ^[0-9]*(.[0-9]{1,2})? ]] && echo $BASH_REMATCH
10