找回密码
 点一下
查看: 6303|回复: 25

请勿使用I2R()

[复制链接]
发表于 2008-8-19 14:56:34 | 显示全部楼层 |阅读模式
(被自己忍无可忍的和谐掉了)
发表于 2008-8-24 09:11:52 | 显示全部楼层
这是为了GUI设计的函数。。
回复

使用道具 举报

发表于 2008-8-24 18:13:49 | 显示全部楼层
I2R 有这个函数么
回复

使用道具 举报

 楼主| 发表于 2008-8-25 10:12:30 | 显示全部楼层
(被自己忍无可忍的和谐掉了)
回复

使用道具 举报

发表于 2008-8-25 10:21:15 | 显示全部楼层
lss的同学很强大的,ls不晓得不要乱说
回复

使用道具 举报

发表于 2008-8-25 10:22:55 | 显示全部楼层
[jass]native I2R takes integer i returns real[/jass]

难道是我看错了?
回复

使用道具 举报

发表于 2008-8-25 10:25:09 | 显示全部楼层
估计这个意思是指没有使用的必要吧
回复

使用道具 举报

发表于 2008-8-25 10:29:08 | 显示全部楼层

有这个的原因显然就是1楼所说的
回复

使用道具 举报

发表于 2008-8-25 11:11:00 | 显示全部楼层
integer x=3,那么

x/4=1
I2R(x)/4=0.75

当然,对Jass来说(x+0.0)/4会更好
回复

使用道具 举报

发表于 2008-8-25 11:25:13 | 显示全部楼层
那么 x / 4.0 可以吗??
回复

使用道具 举报

发表于 2008-8-25 12:19:32 | 显示全部楼层
你没看到的东西,并不代表计算机就没做,我觉得应该这样写 I2R(x)/4.0
回复

使用道具 举报

发表于 2008-8-25 12:21:42 | 显示全部楼层
除数和被除数只要一个是实数,结果应该就会保留小数位了吧
回复

使用道具 举报

发表于 2008-8-25 12:56:53 | 显示全部楼层
是,但x还是会被转成实数后再计算的

也许有人会说R2I(x)/ 4.0 会比x / 4.0慢,但我觉得好的编程习惯远比这一点点速度重要
回复

使用道具 举报

 楼主| 发表于 2008-8-25 13:06:10 | 显示全部楼层
(被自己忍无可忍的和谐掉了)
回复

使用道具 举报

发表于 2008-8-25 13:22:47 | 显示全部楼层
我这么写只是为了说明两点:
1. 有时整数转化为实数是必要的
2. jass里,x+0.0这种方式比I2R(x)要好
回复

使用道具 举报

发表于 2008-8-25 13:29:28 | 显示全部楼层
是的,速度不仅仅有程序运行的速度,还有我们工作的速度。就大多数情况而言,后一个速度比前一个速度要重要得多。

至于为什么会较低后一个速度,这个也不是三言两语能说清的。在这里的就是你没看到的东西,并不代表计算机就没做,而我们要做的就是别让它偷偷干了某一件事。

顺便说下,显式类型转换比隐式类型转换速度慢,可能也仅限于jass了。我们不可能一辈子写jass,所以这一点点速度并不能一直陪伴我们,但习惯却会一直陪伴
回复

使用道具 举报

发表于 2008-8-25 13:32:59 | 显示全部楼层
对于执着于速度的人来说,(x+0.0)/4.0比(x+0.0)/4快,x/4.0比(x+0.0)/4.0快
回复

使用道具 举报

 楼主| 发表于 2008-8-25 14:20:38 | 显示全部楼层
但是如果是变量呢?
回复

使用道具 举报

发表于 2008-8-25 18:49:49 | 显示全部楼层
编程习惯的话,整实数转换一般只要保证正确性,并在自己的代码中保持一致性应该就可以了吧
回复

使用道具 举报

发表于 2008-8-25 19:28:38 | 显示全部楼层
继续用x/4.0来说,假如你在阅读别人的代码(或者是自己一个月前写的),你正在试图修改一个bug。当你看到x/4.0时,就会猜测它可能有错误1、x应该是real ,而不是integer 。2、应该是x/4 。3、只是作者懒写了I2R。不管最终结果是什么,你肯定会为此花了不少时间,而可能有bug的代码段还有十几处这种用法的...............
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 20:22 , Processed in 0.120543 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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