Talk:Skill details

/Archive

New formula proposal
PanSola - Please take a closer look at the formula before "fixing" it. The new formula does NOT simply round down instead of to the nearest integer, and simply rounding down does not give the same results. The -0.5 subtraction happens inside the bracket expression before the division, and this difference is crucial. - Xanon 04:32, 23 May 2006 (CDT)
 * Thanks for pointing that out. - 05:03, 23 May 2006 (CDT)


 * Ok, I just took a detailed look at the difference between the formulas, and it makes absolutely no sense whatsoever. First of all, this "true" formula is gaurenteed to produce values that cannot be greater than the old formula, yet the forum post you linked to shows at certain attribute, the "true" formula actually has larger values.  Second, the OLD formula actually produces results in completely agreement with the "neue Formel" in your forum post.  Based on these two reasons, I'm compeltely removing this so-called "true" formula.  Please discuss the formula here before you add it back. - 05:23, 23 May 2006 (CDT)
 * Regarding that forum post, my guess is that the "GW Team Builder" had a bug in calculating the skill progression, as opposed to the actual formula being wrong. - 05:29, 23 May 2006 (CDT)
 * Ok, in the forum post where you have "public class PrintProgressions", for the new formula the value is casted to an int before it is printed, whereas the old formula is directly printed. Even though the casting happens after round, that's the only cause of bug I can think of.  Perhaps Math.round doesn't automatically round to interger if no argument is specified, and String.format will actually truncate any decimal places.  Thus, the old formula, which was rounded but not to an integer, got truncated, while the new formula, because a cast to the (int), gets rounded up.  - 05:37, 23 May 2006 (CDT)
 * I just looked into the same thing, because the point you raised that the new value should never be higher is truly valid. I took a fresh look at the test code, and indeed spotted a mistake in the implementation of the existing formula. When corrected, both formulas do, in fact, return the same values. The source of the error is that the division ("/") is treated as an integer division, because both parameters are integers, so rounding occurs there. At least one of the parameters must be cast to float to delay the rounding to the appropriate stage. The -0.5 factor I introduced just artificially corrected that error. It's a beginner's mistake which I usually know about, and I am thoroughly emberassed to have stepped into it. :/ Thank you very much for pointing this out - I stand corrected. - Xanon 06:03, 23 May 2006 (CDT)