So basically, rounding steps in the damage calculator are strange. I would read
the Bulbapedia damage formula article very carefully, especially when it comes to rounding numbers up and down to integers.
I figured it out and I'm so upset.
From
Generation V onward, there are three different types of rounding; a
flooring (the same as previous generations), rounding to the nearest integer while rounding down at 0.5, and rounding to the nearest integer while rounding up at 0.5.
This is what it states on the article. And the part that it applies to the formula is when there is ever a decimal as a result of a single step of the damage calculation, you round to the nearest integer (rounding down at 0.5). Which it states here.
Unless otherwise specified, all divisions and multiplications past the initial base damage calculation are rounded to the nearest integer if the result is not an integer (rounding down at 0.5).
Though the wording seems like it's describing the modifiers, it can't be. Otherwise if you were to max roll an attack with STAB that is neutral it would result in a modifier of 1.5, which would then need to round down to 1, effectively negating the STAB altogether.
So when you do this you would end up with the resulting damage number of 33.92 which rounds to 34. Making the original calculation correct.
What showdown seems to do is FLOOR the final result (It's still unclear if showdown floors the decimals in the calculation as it comes out to 33.68 which would round to the same integer that 33.92 would by any method). Any way you slice it, showdown sees the final answer of the calc as 33. But were not done, because I stated in my first reply that 33 doesn't get the correct results either. When you plug 33 in for damage into the modifier equation with a max roll, the final result is 99, but on Showdown it's 98. Looking through the rest of the spread, I noticed all the numbers were even (I'd guess this is common knowledge, but I hadn't noticed until now. I usually just look at percentages).
I thought I had cracked it. Showdown rounds to the nearest even number for its damage results. Then I started checking the rest of the rolls. Immediately, I found another issue. A roll of 0.99 still results in a 98.01 which would round to a 98, but showdown shows the 0.99 roll to be a 96.
This is getting long winded so I'll shorten it as much as I can. I learned that showdown must combine all the modifiers, such as STAB, Type effectiveness, and random rolls and then round down to the nearest decimal (e.g. 2.34 and 2.39 both round down to 2.3) BEFORE multiplying it by the damage calc, then it rounds to the nearest even number.
And this... was the closest I got. For you see, as I checked the rest of the rolls on the table, I noticed that there should be one more roll of 90 and one less of 84. At a roll of 0.9, the damage modifier is exactly 2.7 which multiplies by 33 to equal 89.1 and it rounds up to 90. At rolls of 0.91, 0.92, and 0.93, the modifier is in the 2.7 range and thus they all equal 90. Rolls of 0.89, 0.88, and 0.87 put the modifier at 2.6, which results in an 86 after rounding. However, the roll of 0.87 shows a result of 84 on showdown. What all these numbers mean is that the rolls of 0.87 (3/16) and 0.9 (6/16) are shown to be in a range lower than they should be.
The exact range by these rules should look something like this (84, 84, 86, 86, 86, 90, 90, 90, 90, 92, 92, 92, 96, 96, 96, 98).
The only pattern I can see is that in the showdown range, there are 5 sets of 3 numbers and then a max roll. I have no idea why this is, and I couldn't figure it out without seeing the formula on the calculator myself and I'm no programmer. My best guess is that showdown normalizes the set to show it being more linear in progression, but take that with a grain of salt.
Okay, rant over. If anyone knows why the Showdown calc behaves this way or has any more insight, or an alternate/better explanation than what I found, please share.