Why is that we can buy NEO in decimal places but can only send them to our wallet in whole numbers from an exchanges.
Is it set by NEO or the exchanges?
From what I understand, the decimals are put into place by the exchanges, because that facilitates easier trading. NEO itself is non-fractional, which presents its own challenges when you're trying to send it from place to place. If you're really keen on making sure that you don't 'waste' any money on NEO, then you're best off placing a buy order that takes into account the transaction fees plus the transfer fees. EG, if you want 10 NEO and you're buying it from an exchange that charges 0.10 percent for the transaction plus 0.1 NEO for a transfer, then you need to do the math and place the correct buy order to make sure you end up with 10.1 NEOs after buying so you end up transferring 10 NEOs. Some exchanges build the transaction cost into the trade so you know what how much you end up with after trading (eg Cryptopia) but others (like Kraken, Binance) don't.
It's frustrating!