Wenn es keinen Grund gibt, den Nenner durch edfbonus zu teilen, anstatt den Zähler mit ihm zu multiplizieren, können Sie das Nullteilerproblem vermeiden, indem Sie die Berechnung neu anordnen:
set /a "hp = hp - ((atk*arandom*edefbonus)/(edef*6))"
Die äußeren Klammern und die Anführungszeichen sind nicht erforderlich, und set / a hat einen Operator, der einige Eingaben erspart und Ausdrücke wie folgt aufräumt:
set /a hp -= atk*arandom*edefbonus/(edef*6)
Da Sie die Rundung erwähnt haben, füge ich Folgendes hinzu:
Wenn der Wert rechts vom -=
Operator oben immer positiv ist, ist der einfachste Weg, die Rundung durchzuführen:
set /a hp -= (10*atk*arandom*edefbonus/(edef*6)+5)/10
Beachten Sie, dass wir vor der Division mit 10 multiplizieren, nicht danach, so dass die Berechnung lautet:
10*2*2*8 =320 1*6 =6 320/6 =53 53+5 =58 58/10 =5
Wenn wir nach der Division mit 10 multiplizieren, wie in
set /a hp -= (atk*arandom*edefbonus/(edef*6)*10+5)/10
.
Die Berechnung würde gehen:
2*2*8 =32 1*6 =6 32/6 =5 (we just lost the fraction digit, so rounding won't work) 5*10 =50 50+5 =55 55/10 =5
Gleiches Ergebnis, aber nur, weil die Rundung sowieso abgerundet hätte.