Sort:  

To know exactly why, you’ll have to dig into the detail implementations (the code). From my understanding, it’s because the smallest increments / the non-divisible unit of Steem and SBD are 0.001. In the above example, you can not pay 0.0009 SBD to buy 0.001 steem. There’s no such a thing (smaller than 0.001SBD). If the best bid is 0.8 at the moment, you can not sell 0.002 Steem for 0.002Sbd (because it’s better than current best bid, no way to match it), instead you will be paid 0.001 SBD, resulting a 0.5 trade price. The author could choose not to match these orders, but I guess they choose to match them this way

To test this, send an order to sell 0.001 Steem, you will be receiving 0.001 SBD, since at the moment Steem price is larger than 1 SBD