VB6中的阻塞溢出

VB6中的阻塞溢出,vb6,types,Vb6,Types,我在VB6.0中使用Clong数据类型时出现溢出错误,因为值太大了。如何克服这个问题?还有比Clong数据类型更高的可用数据吗?您可以使用双精度而不是长精度,因为它可以容纳更大的数字。函数是CDbl(),而不是CLng() 在VB6.0中,Long为32位,最多可保存2147483648的值 Double是64位的,可存储的旧值最多为:1.79769313486231570E+308 编辑:请参考此我相信MSVS2010即将推出的VB具有CLonger(64位)、CEvenLongerYet(1

我在VB6.0中使用
Clong
数据类型时出现溢出错误,因为值太大了。如何克服这个问题?还有比
Clong
数据类型更高的可用数据吗?

您可以使用双精度而不是长精度,因为它可以容纳更大的数字。函数是CDbl(),而不是CLng()

在VB6.0中,Long为32位,最多可保存2147483648的值
Double是64位的,可存储的旧值最多为:1.79769313486231570E+308


编辑:请参考此

我相信MSVS2010即将推出的VB具有
CLonger
(64位)、
CEvenLongerYet
(128位)和
CTooDamnLongForSensibleUse
(256位)数据类型


根据实际值的大小,VB6货币数据类型可能是一个不错的选择


它支持-922337203685477.5808到922337203685477.5807范围内的值。

以下是VB6参考手册中的一些选项

  • 长(长整数)4字节 -2147483648至2147483647
  • 单精度 浮点)4字节-3.402823E38 负值为-1.401298E-45; 正值为1.401298E-45至3.402823E38。大约6或7个有效数字的准确性
  • 双重的 (双精度浮点)8 字节-1.79769313486231E308至 -4.94065645841247E-324为负值;4.94065645841247E-324至 1.79769313486232E308为正值。准确度约为15或16个有效数字
  • 货币(比例整数)8 字节-922337203685477.5808至 922337203685477.5807
  • 小数点14 字节 +/-79,228,162,514,264,337,593,543,950,335 没有小数点; +/-7.9228162514264337593543950335,右侧有28处 十进制的最小的非零数字是 +/-0.0000000000000000000001

    • 尽量避免被零除。如果代码的分子和分母对象等于零,请尝试使分母等于1。因此,零/零=溢出
      零/1=零(无溢出)

      小心!一个double实际上并不具有更高的精度,尽管它可以容纳更大的数字。大多数系统中的双精度四舍五入到15位左右。例如,1234567889012345678901234567890将变为1.2345678901234568e29。Curt基本正确。虽然双精度确实比长精度高,当然:长精度有10个有效数字,双精度有15或16个有效数字。何塞,为什么不链接到VB6参考手册?有那么一分钟,我以为你是认真的。。。洛莉很好奇,何塞。这三种数据类型中哪一种让你确信我不是认真的?我希望不是CTooDamnLongForSensibleUse类型:-)或者更糟的是,结尾的幽默标签:-)实际上在.NET 4.0中会有一个CEvenLongerThanCTooDamnLongForSensibleUse类型,也称为BigInteger: