我有一个表单进行简单的计算,但数字非常大.
示例:xml 96276480 graphics 2931829760
我已经将数据类型声明为Long,甚至还有一个CLng(Me.txtGraphics.value),但我仍然得到溢出错误这些数字来自文本框.这是我的代码:
Dim sgm As Long
Dim XML As Long
Dim prv As Long
Dim base As Long
Dim IETM As Long
Dim Graphics As Long
Dim total As Long
Dim pgCnt As Long
Const CXML = 2.5
Const CSGM = 6
Const CGraphic = 339
Dim pcSGM As Long
Dim pcXML As Long
Dim pcGraphic As Long
If Me.txtSGM.value = "" Then
sgm = 0
Else
sgm = Me.txtSGM.value
End If
If Me.txtXML.value = "" Then
XML = 0
Else
XML = Me.txtXML.value
End If
If Me.txtGraphics.value = "" Then
Graphics = 0
Else
Dim pics As Long
pics = CLng(Me.txtGraphics.value)
Graphics = CLng(pics)
End If
If Me.txtTotal.value = "" Then
base = 0
Else
base = Me.txtTotal.value
End If
prv = base
pcSGM = (CLng(sgm) / 1024) / CSGM
pcXML = (CLng(XML) / 1024) / CXML
pcGraphic = (CLng(Graphics) / 1024) / CGraphic
'total calculated newest SGM & XML values
total = (CLng(pcSGM)) + (CLng(pcXML)) + (CLng(pcGraphic))
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助,马克斯
VBA中的长整数是32位有符号整数(而不是VB.Net中的长整数,即64位).因此,它可以容纳的最大值是2147483647.
2931829760显然更大,因此你会溢出.
使用Decimal和CDec代替Long和CLng将它们转换为小数,或使用Double和CDbl将它们转换为双精度.
CDbl 可能更快,但可能导致浮点不准确问题.
如果您确定您的代码只能在64位变量的Access中执行,您还可以使用CLngLng,将其转换为LongLong数据类型,64位有符号整数
| 归档时间: |
|
| 查看次数: |
923 次 |
| 最近记录: |