Bad Math at Wolfram Alpha (Or Not?)
wolframalpha.com
wolframalpha.com
Differences between percentages are called percentage points, so if you want to add 1% and 3% and get 4%, you should call the second term "3 pp".
This will seem outrageous to many programmers, who will understandably want two numeric-looking things of the same type to add in the ordinary way. But percentages don't work that way. They're a shorthand for a non-additive operation so they have different rules.
For instance, enter "1%" into Wolfram and it'll tell you it's 1/100. Do the same for 3% and it'll tell you it's 3/100. Now ask it to add those 2 fractions, and it'll obviously give you 4/100 - which it reports can be expressed as 4%.
These are supposed to be alternate representations of the same thing, so arguably the answer shouldn't be different.
Add(int x, Percent y) = x + (y/100)*x
just because `print` does one thing doesn't really mean `+` is constrained in the same way
Let's say f(x) gives some alternate representation of x. Then f(3) + f(1) should be equal to f(3 + 1). Under this interpretation, f(3%) = 3/100 etc, so that 3% + 1% = 4%.
But you could certainly argue that the idea of equating 3% with 3/100 is simply wrong. I like it because I like to think of "per" as meaning "divided by", and we generally use it that way when we use units like "metres per second = m/s = ms^(-1)".
What is 1 o'clock + 1 o'clock?
Mathematica is well equipped to recognize the circumstances that produced the wrong result, and produce the right result instead.
That involves work, but Mathematica has kept a stranglehold on the product specifically in order to extract the revenue that could be used to pay for such work.