免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2730 | 回复: 3
打印 上一主题 下一主题

[数值计算] awk只能计算出小数点后48位? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-18 09:36 |只看该作者 |倒序浏览
[root@localhost files]# awk 'BEGIN{printf"%.64f\n",atan2(1,1)*4}'
3.1415926535897931159979634685441851615905761718750000000000000000
[root@localhost files]# echo "scale=64;a(1)*4"|bc -l
3.1415926535897932384626433832795028841971693993751058209749445920
[root@localhost files]#

是不是我机器的问题?{:3_198:}

论坛徽章:
0
2 [报告]
发表于 2013-05-19 11:40 |只看该作者

这个结果就更明显了,明明应该是一个无限循环小数,awk的计算结果却差了很多位。
awk的运算机制是不是有什么特别之处啊?
昨天百度、Google了很长时间也没找到相关解释,希望有大神为我解惑!

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2013-05-19 12:09 |只看该作者
本帖最后由 jason680 于 2013-05-19 12:36 编辑

回复 2# itssolei

1. please study the IEEE 754 for floating number

http://zh.wikipedia.org/zh-cn/IEEE_754
IEEE二进制浮点数算术标准(IEEE 754)是1980年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number)),一些特殊数值(无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和五种例外状况(包括例外发生的时机与处理方式)。
...

2. gnu awk user's guide
http://www.gnu.org/software/gawk/manual/gawk.html
15.3 gawk + MPFR = Powerful Arithmetic
http://www.gnu.org/software/gawk/manual/gawk.html#Gawk-and-MPFR
15.4.3 Representing Floating-point Constants
http://www.gnu.org/software/gawk ... 002dpoint-Constants

   

论坛徽章:
0
4 [报告]
发表于 2013-05-19 18:56 |只看该作者
回复 3# jason680


    感谢解答!给出的资料很权威、很详细!
不过因为是英文资料,只看懂了大概意思,还需要慢慢啃呐!
我的gawk版本比较老了,看来是不支持任意精度算法的原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP