我使用printf将数字的小数位数限制为3位小数
printf "%.3f\n" 8.577772
8.578
我想将此数字截断为3位小数而不进行四舍五入,以便打印为8.577。
首选printf解决方案。
答案 0 :(得分:3)
假设这是一个变量,它可以在小数之前有任意数量的位置:
$ var=8.577772
$ printf "%s.%.3s\n" $( echo $var | tr '.' ' ' )
8.577
$ var=134.56789
$ printf "%s.%.3s\n" $( echo $var | tr '.' ' ' )
134.567
答案 1 :(得分:1)
我认为限制舍入是不可能的,因为printf使用IEEE 754作为其内部表示。 请改用regexp:
echo "34234.23423423" | grep -oE '[0-9]*\.[0-9]{3}'