Board logo

标题: [问题求助] VBS整除的溢出错误? [打印本页]

作者: wankoilz    时间: 2013-3-12 15:49     标题: VBS整除的溢出错误?

这个整除总是溢出,还有mod也是。其他除法、求幂、加法等都没问题,不知道是怎么回事?
  1. a=3194548456
  2. msgbox a\2
  3. 'msgbox a mod 2
  4. 'msgbox a/2
  5. 'msgbox a^2
复制代码

作者: Demon    时间: 2013-3-12 16:49

http://msdn.microsoft.com/en-us/ ... x%28v=vs.84%29.aspx

Before division is performed, numeric expressions are rounded to Byte, Integer, or Long subtype expressions.
作者: wankoilz    时间: 2013-3-12 17:24

本帖最后由 wankoilz 于 2013-3-12 17:49 编辑

难道整除最大只支持长整型的2147483647吗,难怪溢出了,还有mod运算也是这个情况,但帮助文档却没说明。
这种情况怎么处理呢?
作者: Demon    时间: 2013-3-12 17:54

难道整除最大只支持长整型的2147483647吗,难怪溢出了,还有mod运算也是这个情况,但帮助文档却没说明
这 ...
wankoilz 发表于 2013-3-12 17:24


http://msdn.microsoft.com/en-us/library/basszbdt%28v=vs.84%29.aspx

If number1 or number2 are floating point numbers, they are first rounded to integers.
作者: wankoilz    时间: 2013-3-12 18:28

本帖最后由 wankoilz 于 2013-3-12 18:40 编辑

integer不是更小了……那大数的整除和求模咋办呢,给个提示吧!(我看的中文帮助文档)
作者: Demon    时间: 2013-3-12 19:36

integer不是更小了……那大数的整除和求模咋办呢,给个提示吧!(我看的中文帮助文档)
wankoilz 发表于 2013-3-12 18:28


中文帮助文档是这么写的:

模数或余数。运算符执行 number1 除以 number2 操作(浮点数四舍五入为整数)并只返回余数作为 result。例如,在下面的表达式中, A(为 result)等于 5。
A = 19 Mod 6.7
如果任一表达式为 Null,则 result 也为 Null。任一表达式为 Empty 时按 0 来处理。

作者: wankoilz    时间: 2013-3-12 19:45

好吧。正数整除的话,还可以用/,再fix()或int()代替,但是求模怎么想办法突破integer的限制呢,请指教。
作者: Demon    时间: 2013-3-12 23:49

好吧。正数整除的话,还可以用/,再fix()或int()代替,但是求模怎么想办法突破integer的限制呢,请指教。
wankoilz 发表于 2013-3-12 19:45


被除数 = 商 *  除数 + 余数

小学数学不用我教你吧
作者: wankoilz    时间: 2013-3-13 09:54

本帖最后由 wankoilz 于 2013-3-13 11:10 编辑

忽略本楼!
作者: wankoilz    时间: 2013-3-13 09:56

本帖最后由 wankoilz 于 2013-3-13 11:11 编辑

还是只能这样……好吧
作者: BAT-VBS    时间: 2013-3-13 10:46

Python用户表示压力不大

$ python -c "print 3194548456/2"
1597274228




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2