• Herzlich Willkommen!

    Nach der Schließung von inDiablo.de wurden die Inhalte und eure Accounts in dieses Forum konvertiert. Ihr könnt euch hier mit eurem alten Account weiterhin einloggen, müsst euch dafür allerdings über die "Passwort vergessen" Funktion ein neues Passwort setzen lassen.

    Solltet ihr keinen Zugriff mehr auf die mit eurem Account verknüpfte Emailadresse haben, so könnt ihr euch unter Angabe eures Accountnamens, eurer alten Emailadresse sowie eurer gewünschten neuen Emailadresse an einen Administrator wenden.

Diminishing Returns Kalkulationen bei Skills

LastCorpse

Well-known member
Ex-Staffmember
Registriert
5 Juni 2010
Beiträge
6.190
Punkte Reaktionen
930
Hallo,

Ist die Diminishing Returns Formel aus der SkillCalc.txt noch aktuell:

((110*lvl) * (b-a))/(100 * (lvl+6)) + a


Mein kleiner selbstgebastelter Excel-Calculator spuckt (minimal) andere Ergebnisse aus, als der Calc hier auf PlanetDiablo (dessen Werte mit den im Spiel angezeigten übereinstimmen).
Wenn ich von Hand nachrechne, komme ich auf die gleichen Ergebnisse wie mein Calc.

Wo liegt der Fehler? Ist die Formel falsch/veraltet? (Durchaus möglich, die SkillCalc wird scheinbar nicht verwendet...)
Rundungsfehler sollten eigentlich nicht entstehen, da nur das Gesamtergebnis abgerundet wird.

Vielen Dank.
 
Kannst du mal Beispielwerte posten?
Ich benutze die Formel auch so, wie du sie angegeben hast, allerdings könnte ich mir vorstellen, dass nach der Division gerundet wird, da das bei Integerwerten die Regel ist.
 
Pierce/Durchbohren
Code:
Lvl	mein Calc	Spiel/PlanetDiablo Calc
1	24,14		23
2	34,75		34
3	43		42
4	49,6		49
5	55		55
6	59,5		59
7	63,31		63
8	66,57		65
9	69,4		69
10	71,88		71
11	74,06		73
12	76		75
13	77,74		77
14	79,3		79
15	80,71		80
16	82		82
17	83,17		82
18	84,25		83
19	85,24		84
20	86,15		85

Ist irgendwas an diesem Rechenweg falsch:

a=10
b=100
Lvl=15

((110*lvl) * (b-a))/(100 * (lvl+6)) + a
((110*15) * (100-10))/(100 * (15+6)) + 10
(1650 * 90)/(100 * 21) + 10
148500/2100 + 10
70,71 + 10 = 80,71
 
Zuletzt bearbeitet:
Also wenn ich da Integer-Division mache komme ich auf 80. Warum=

(int) 148500/2100=70. Wird ja bei Ganzzahldivision einfach abgerundet (also 20/21=0).
 
Ja, ich auch. In diesem Falle stimmen beide Ergebnisse nach der Rundung überein. Ich wollte in diesem Fall nur wissen, ob der Rechenweg so richtig ist.

Ob man vor oder nach der letzten Addition rundet ist vollkommen egal, weil a immer ein ganzzahliger Wert ist.
 
Das liegt daran, dass du in der falschen Reihenfolge rechnest:

dmXY = [ (Y-X) * [110*lvl / ( lvl + 6 )] / 100 ] + X
Nach beiden Divisionen jeweils abrunden.

Quelle
 
Zurück
Oben