很郁闷的算数~~~批处理转AU3
本帖最后由 lm959680 于 2009-5-22 16:40 编辑从一个批处理过来的一句
@echo off
set compt=50
set /a swport=3260+(%compt%-1)/50*2
echo %swport%
pause
set加了一 /a 最要注意的一个词
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式
评估器很简单并以递减的优先权顺序支持
() - 分组
! ~ - - 一元运算符
* / % - 算数运算符
+ - - 算数运算符
<< >> - 逻辑移位
- 按位“与”
^ - 按位“异”
| - 按位“或”
= *= /= %= += -= - 赋值
&= ^= |= <<= >>=
, - 表达式分隔符
Local $swport,$compt
$compt=50
$swport=3260+($compt-1)/50*2
MsgBox(0, "", $compt&" "&Round($swport))
结果就不对了``
AU3结果3261
计算器 3260
批处理 3260
Local $swport,$compt
$compt=50
$swport=3260+($compt-1)/(50*2);加了括号
MsgBox(0, "", $compt&" "&Round($swport))
结果3260 结果又正确了???
将compt变量改成51 问题就又出来了
批处理的是 3262 ???
计算器 3260
乘法不带括号AU3 3262
乘法带括号AU33620
现在想请教的问题是
set /a swport=3260+(%compt%-1)/50*2
在AU3如何正确的表示。
请大家试了在回答。不然结果会不对批处理的结果的`~~、
每50算一个数
50
100
150
哦 忘了告诉 程序有多余的迷惑下大家~~`
AU3的运算符 优先次序
NOT
^
* /
+ -
&
< > <= >= = <> ==
AND OR 本帖最后由 lm959680 于 2009-5-21 18:36 编辑
哈哈站位`~~沙发要自己坐才舒服的`~~:face (5): 3260+(50-1)/50*2
=(50-1)/50*2+3260
=49/50*2+3260
=0.98*2+3260
=1.96+3260
=3261.96
你是怎么用计算器得到3260的?
至于批处理,分开运行就知道,set /a swport=(%compt%-1)/50的结果是0,原因是set不处理小数。
如果你要做到这个效果也很简单:
$swport=3260 + Int(($compt - 1) / 50) * 2 加括号是违背原意的。
100/2*2=100
100/(2*2)=25 头痛的算术 试验了。
同意sensel朋友的见解。 本帖最后由 lm959680 于 2009-5-22 16:39 编辑
3260+(50-1)/50*2
=(50-1)/50*2+3260
=49/50*2+3260
=0.98*2+3260
=1.96+3260
=3261.96
你是怎么用计算器得到3260的?
至于批处理,分开运行就知道,set /a swport=(%compt%-1)/50的结果是0,原因是set不处 ...
sensel 发表于 2009-5-21 20:16 http://www.autoitx.com/images/common/back.gif
谢了,一是自己不懂算二是 不明白set 加“a” 后 怎么理解~~~
莫非我从小学一直都是错的`~ 哈哈 我永远都成不了才`~~~
先括号在乘除 后加减
哦 还忘记了``也谢谢其他的朋友帮助和参与~~ 我现在看着都有点迷惑了! 恩!学习了!!!!
页:
[1]