LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1504|回复: 18

如何控制 bc 中有效数字的位数?

[复制链接]
发表于 2004-4-21 12:09:55 | 显示全部楼层 |阅读模式
不是指小数点后面的位数
 楼主| 发表于 2004-4-21 12:11:09 | 显示全部楼层
还有:能否以科学记数法表示数值?
发表于 2004-4-21 12:24:53 | 显示全部楼层
1,:ask
2,用awk的printf函数:如:
/home/javalee#echo 2857983475934585089|awk '{printf "%e\n",$0}'
2.857983e+18
 楼主| 发表于 2004-4-21 18:04:45 | 显示全部楼层
bash 的 printf 也很好用
发表于 2004-4-21 23:49:17 | 显示全部楼层

回复: 如何控制 bc 中有效数字的位数?

最初由 dearvoid 发表
不是指小数点后面的位数

dearvoid兄所指的"bc的有效数字的位数",我还不太明白,望共探讨~
发表于 2004-4-22 01:25:16 | 显示全部楼层

回复: 回复: 如何控制 bc 中有效数字的位数?

最初由 javalee 发表
dearvoid兄所指的"bc的有效数字的位数",我还不太明白,望共探讨~

有效数字的概念是相对的,不同专业领域有不同的解释。请问是哪种呢?
比如说256.152的有效位数就是6,0.0015486的有效位数是7。

awk中有精度一说,可用此控制有效位数,举例如下:
printf("%*.*g\n",4,2,mynum)
发表于 2004-4-22 02:49:59 | 显示全部楼层
最初由 dearvoid 发表
bash 的 printf 也很好用

更正一下,printf不是bash的专利,因为他是一个外部命令
最初由 home_king 发表
有效数字的概念是相对的,不同专业领域有不同的解释。请问是哪种呢?
比如说256.152的有效位数就是6,0.0015486的有效位数是7。

awk中有精度一说,可用此控制有效位数,举例如下:
printf("%*.*g\n",4,2,mynum)

要这样的话,就可以用工具取一个数字的任意长度为有效数字,是不是可以这样立即? :ask
如:

  1. /home/javalee/test#echo 24323.234|cut -b1-3
  2. 243
  3. /home/javalee/test#echo "234.234*234"|bc|cut -b1-5
  4. 54810
复制代码
发表于 2004-4-22 03:47:15 | 显示全部楼层
不能直接cut吧,至少得保证数字大小正确
比如123456保留两位有效数字就是
1.2 E+05
 楼主| 发表于 2004-4-22 08:49:24 | 显示全部楼层
最初由 javalee 发表
更正一下,printf不是bash的专利,因为他是一个外部命令

要这样的话,就可以用工具取一个数字的任意长度为有效数字,是不是可以这样立即? :ask
如:

  1. /home/javalee/test#echo 24323.234|cut -b1-3
  2. 243
  3. /home/javalee/test#echo "234.234*234"|bc|cut -b1-5
  4. 54810
复制代码
严正声明:bash 有个 builtin 的 printf ! (我用 Red Hat 8.0)
 楼主| 发表于 2004-4-22 08:55:04 | 显示全部楼层

回复: 回复: 回复: 如何控制 bc 中有效数字的位数?

最初由 home_king 发表
有效数字的概念是相对的,不同专业领域有不同的解释。请问是哪种呢?
比如说256.152的有效位数就是6,0.0015486的有效位数是7。

awk中有精度一说,可用此控制有效位数,举例如下:
printf("%*.*g\n",4,2,mynum)
小学数学课本上就有有效数字的概念,我还没有见过其他定义
0.0015486 的有效数字位数怎么会是 7 ? 根据何经何典?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表