当前位置: 首页>>技术教程>>正文


bc:设置小数点后的位数

, ,

问题描述

bc将数字处理为整数:

# echo "100/3" | bc
33

bc -l将数字作为浮点对象处理:

# echo "100/3" | bc -l
33.33333333333333333333

有没有办法限制小数点后的位数?

最佳解决办法

设置scale特殊变量:

$ echo "scale=2; 100/3" | bc
33.33

次佳解决办法

scale仅适用于分部;如果一些极客在乘法中需要它,那么你可以通过使用字符串操作来实现这一点。假如你需要乘以32 * 0.60,答案是19.20。如果您需要单独获得它,您可以通过不同的方法获得它。

  1. 使用字符串操作

    $ S=$(echo "32*.60" | bc ) ; echo ${S%.*}
    19
    

    String Manipulation语法:${Variable%pattern},这将删除%之后的短匹配模式。有关更多字符串操作的详细信息,请参阅the Advanced Bash-Scripting Guide

  2. 使用按照**时间表所述的量表**

    $ echo "scale=0; 32*60/100" | bc
    19
    
  3. 要摆脱尾随的0,而不是字符串操作,也可以除以1。

    $ echo "0.232 * 1000" | bc
    232.000
    
    $ echo "0.232 * 1000 / 1" | bc
    232
    

第三种解决办法

除了以前的答案

echo "scale=2; 1.0150876" | bc

返回

1.0150876

添加数学运算只能得到2个十进制数 – (NUMBER * 100)/100

echo "scale=2; (1.0150876 * 100) / 100" | bc

现在回来了

1.01

第四种办法

你也可以使用printf命令将结果舍入到3位小数

# printf "%.3f\n" $(echo "100/3" | bc -l)
3.333

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1913.html,未经允许,请勿转载。