I think more granularity is good, however I see the problem here. Most bidding/auction environments implement a 'minimum increment' to solve this. How about this...
if (my APR) > (their APR):
if (my APR) < (their APR) + 0.25%:
if (my order size) > (their order size):
return "My order is prioritized above their order."
else:
return "Their order is prioritized above my order."
else:
return "My order is prioritized above their order."
else:
return "Their order is prioritized above my order."
In other words, your order's APR has to be 0.25% above theirs to take priority no matter what. If your order's APR is above their order BUT less than 0.25% above it, then it only takes priority if the order is bigger.