在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7964|回复: 9

[解决] tcl 中expr计算问题

[复制链接]
发表于 2013-11-15 16:24:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
% set a [expr int((1.46+0.22-0.08)/0.32)]
4

常规的计算结果是5,但是程序运算的结果是4,哪里的问题
发表于 2013-11-15 19:15:44 | 显示全部楼层
回复 1# baojiewu


    int argThe argument may be any numeric value.  The integer part of arg is determined, and then the low order bits of that integer value up to the machine word size are returned as an integer value.  For reference, the number of bytes in the machine word are stored in the wordSize element of the tcl_platform array.
 楼主| 发表于 2013-11-18 16:52:46 | 显示全部楼层
回复 2# sjtusonic


    有什么办法可以避免或者解决这个问题
发表于 2013-11-19 08:49:46 | 显示全部楼层
回复 3# baojiewu


   四舍五入的话,有个叫round的吧?
发表于 2013-11-19 13:53:22 | 显示全部楼层
1.46+0.22-0.08 这个的结果可能是1.60000000000000001或者1.599999999999998531240之类的数字,为了保险一下 你需要加上一个1e-9这么一个很小的数,确保结果是大于1.6 这样结果就会是5了
 楼主| 发表于 2013-11-20 15:20:30 | 显示全部楼层
回复 5# coffeeing520


    这个想法不错,学习了
发表于 2015-7-20 14:26:17 | 显示全部楼层
答案perfect
发表于 2015-7-24 16:52:23 | 显示全部楼层




   为什么会是1.6000001或者1.599999这样的值?
发表于 2015-7-24 21:12:38 | 显示全部楼层
回复 8# jingest

2进制的数转成10进制,只能是浮点数了 哪会刚刚好1.6
发表于 2015-7-29 18:44:02 | 显示全部楼层
改成 set a [expr int([expr (1.46+0.22-0.08)/0.32])] 即可
2013年的也能被翻出来,服了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 17:36 , Processed in 0.023755 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表