Visual Basic 2010溢出错误

时间:2015-05-13 17:44:04

标签: vb.net application-settings integer-overflow

所以我制作了一款具有无限可扩展数字的游戏,而且我已经达到了21亿。这会产生溢出错误。

  

算术运算导致溢出。

在我的代码中,我有两个变量:

Dim coal As BigInteger
Dim totalCoal As BigInteger

这两个应用程序设置我将它们保存到:

enter image description here

My.Settings.coal = coal.ToString()
My.Settings.totalCoal = totalCoal.ToString()

我无法发布超过2个链接,因此将.rar文件与其中的图片链接起来。 https://dl.dropbox.com/s/s30knl44p9luhjy/Screenshots.rar?dl=0

我主要担心的是无法修复此问题,因为我已经分发了应用程序链接。我需要知道如何使值的长度不受限制。

' Import Code
Dim data As New StreamReader("C:\Temp\Data.txt")
Dim value As String = ""
Dim dataArray(1) As String
Dim i As Integer = 0
Dim setValue As Integer = 0
Do Until data.Peek = -1
    'Get 1 Value from Text File at a time
    value = data.ReadLine()
    'Place Value into Array
    dataArray(i) = value
    'Output
    saveValues.Items.Add(dataArray(i))
    'Set Values
    If setValue = 0 Then
        My.Settings.coal = saveValues.Items(0)
        setValue = 1
    ElseIf setValue = 1 Then
        My.Settings.totalCoal = saveValues.Items(1)
        setValue = 2
    End If
    i += 1
    If setValue = 2 Then
        Application.Restart()
    End If
Loop

' Export Code
saveValuesSet.Text =
My.Settings.coal & Environment.NewLine &
My.Settings.totalCoal
Using writer As StreamWriter = New StreamWriter("C:\Temp\Data.txt")
    writer.WriteLine(saveValuesSet.Text)
End Using

1 个答案:

答案 0 :(得分:2)

20亿是Integer数据类型的最大值,您可以使用Long代替大约9 * 10 ^ 18。

如果您想使用任何大小的数字,您应该查看System.Numerics.BigInteger。您需要向项目添加对System.Numerics的引用才能使用BigInteger。

如果要在设置中存储BigInteger,可以使用String类型创建一个Setting并在那里存储字符串表示(当然String可能非常长)。

My.Settings.BigIntegerString = myBigInteger.ToString