@n00bystar
i did not yet had a very close look to af bonus. but i would say that this is more or less how it's working.
you are right, i missed the / 100 at the end. when ever i think i know where the game does a round down i use the "[ ]" brackets. so for your example one round down after quickness was added, one after haste and a last one after toa speed. and you end up with 2.19 swing speed.
i don't know where the game does rounding for the damage modifier. i even did not try to guess this. there are millions of ways how it could be done, so i have not a chance of guessing the right rounding. i tried some hundreds of different round down values on the weapon skill formula. but i stopped trying because none of them worked perfect. its very very hard to figure this out.
@twizztd1
i think they use both integer and float (maybe double as well, but that's very very hard to say). an easy prof that they use integer in some places is the "STATS = [STRENGTH / 2]" stuff. this is integer math, if they would use float or double you would get bonus on weapon skill with every point of strength but you only get it for every 2 point. so yes they use integer math.
but as i have tried hundreds of integer math based calculations on weapon skill and they all failed i am pretty sure that they use float somewhere in the calculation as well. that makes it nearly impossible to figure it out

there are some evil things happening if you use float the "bad way" ^^ for example [0.57 * 100] / 100 = 0.56 just because if 0.57 is uses as a float number, the computer trys to break this number down to a base 2, binary display and there it is something like 0.569999999999999999999999999999999... but if you multiply this with 100 and do a round down on it you get 56. and divided it again with 100 you get 0.56 ^^. btw. this error happens also if you use double, but for other numbers in other situations. so for every math operation * or / we have the option integer round down error, float transformation error, double transformation error. now count the * and / operations in the formulas and calculate the possible variations ^^ baaaaaaaad
ah and btw. the breakpoints for casting speed also look like integer math with little numbers. float and double would more likely do not have such huge holes between the breakpoints (30 dexterity points and more until your castspeed increases again).
@twizztd1 2. post
multiplying with values like 0.005 and 0.01 is not a problem if you have a big enough integer value at the beginning. if it's to small do * 10 or *100 or * 1000... at the beginning and /10 or /100 or / 1000 at the end. for example 200 * (0.005 * X) is okay. but sure... 2 * (0.005 * X) will not work. but does that really matter? atm we cant say how rounding and stuff is done exactly. all i know for sure that there are some integer values used in the code. try the unstyled cap damage formula with none bugged weapons and you see the integer doing the math.
@dandaly1988
it's not that easy. slower weapons get a bit of bonus because stuff like bladeturn hit them harder. it's more or less... get a slow weapon and make it swing fast!