Я все еще новичок в программировании приложений и пытаюсь создать боевой калькулятор для игры, в которую я играю.Я выполнил большую часть пользовательского ввода и математики, но, достигнув определенной точки, я столкнулся с переполнением, даже после изменения моей переменной на Int64.
Строка Faulty:
damagedealt1 = dcfleet1hp / darmadahp * armadadmg
Чтобы поместить некоторый контекст, пользователь вводит количество кораблей и тип корабля, и программное обеспечение вычисляет значения из этих входов.Вот строки, связанные с этим кодом:
'Fleet 1'
fleet1hp = fleet1hp + fleet1hpboost
fleet1dmg = fleet1dmg + fleet1dmgboost
cfleet1hp = fleet1hp * fleet1count
cfleet1dmg = fleet1dmg * fleet1count
'D Fleet 1'
dfleet1hp = dfleet1hp + dfleet1hpboost
dfleet1dmg = dfleet1dmg + dfleet1dmgboost
dcfleet1hp = dfleet1hp * dfleet1count
dcfleet1dmg = dfleet1dmg * dfleet1count
'Fleet 2'
fleet2hp = fleet2hp + fleet2hpboost
fleet2dmg = fleet2dmg + fleet2dmgboost
cfleet2hp = fleet2hp * fleet2count
cfleet2dmg = fleet2dmg * fleet2count
'D Fleet 2'
dfleet2hp = dfleet2hp + dfleet2hpboost
dfleet2dmg = dfleet2dmg + dfleet2dmgboost
dcfleet2hp = dfleet2hp * dfleet2count
dcfleet2dmg = dfleet2dmg * dfleet2count
'Text Fields Assignation'
tfleet1.Text = fleet1type
tfleet1count.Text = fleet1count
tfleet1hp.Text = cfleet1hp
tfleet1dmg.Text = cfleet1dmg
tfleet2.Text = fleet2type
tfleet2count.Text = fleet2count
tfleet2hpp.Text = cfleet2hp
tfleet2dmg.Text = cfleet2dmg
'Armada HP Calculations'
armadahp = cfleet1hp + cfleet2hp
armadadmg = cfleet1dmg + cfleet2dmg
darmadadmg = dcfleet1dmg + dcfleet2dmg
darmadahp = dcfleet1hp + dcfleet2hp
'Individual Fleet DMG Calculation'
'Broken Code Here'
damagedealt1 = dcfleet1hp / darmadahp * armadadmg
damagedealt2 = dcfleet2hp / darmadahp * armadadmg
damagetaken1 = cfleet1hp / armadahp * darmadadmg
damagetaken2 = cfleet2hp / armadahp * darmadadmg
А вот определения переменных:
fleet1hp = A single ship in attacking fleet 1's HP
fleet1dmg = A single ship in attacking fleet 1's DMG
cfleet1hp = The HP combined of all ships in attacking Fleet 1
cfleet1dmg = The DMG combined of all ships in attacking Fleet 1
(then all the same with a 'd' before variable to denote defending fleets)
armadahp = The total HP of all Fleets of attacker
darmadahp = The total HP of all fleets of defender
damagedealt1 = Would be the total damage taken by a single fleet
Идея в том, что получаемый урон равен hp флота, деленному на всефлот hp умножает входящий урон
Что должна делать эта строка:
damagedealt1 = dcfleet1hp / darmadahp * armadadmg
Но эта строка вызывает
System.OverflowException: 'Произошла арифметическая операцияв переполнении. '