【发布时间】:2019-05-05 06:07:10
【问题描述】:
我看到this SO answer 展示了如何在 Bash 中删除字符串中字符之后的所有文本。有了这些信息,我可以做这样的事情来四舍五入:
NUMBER=10.12345
NUMBER=${NUMBER%.*} # 10
但是,我想保留小数点后两位数。我怎样才能让10.12345 成为10.12?我不需要适当地圆整,只需修剪。运行${NUMBER%.*} 时可能带有通配符?
【问题讨论】:
我看到this SO answer 展示了如何在 Bash 中删除字符串中字符之后的所有文本。有了这些信息,我可以做这样的事情来四舍五入:
NUMBER=10.12345
NUMBER=${NUMBER%.*} # 10
但是,我想保留小数点后两位数。我怎样才能让10.12345 成为10.12?我不需要适当地圆整,只需修剪。运行${NUMBER%.*} 时可能带有通配符?
【问题讨论】:
您可以使用printf 对浮点数进行舍入。试试printf "%.2f" "${NUMBER}"。您也可以将值保存到变量中:printf -v myvar "%.2f" "${NUMBER}"。
【讨论】:
使用=~ 运算符:
$ 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
【讨论】: