default decimal for the erc20 token is 18
Not exactly. You can decide the decimals of your token. You are not bound to keep this 18. You can choose any number. Ether has 18 decimals. So this means the smallest value that can exist 1 wei. You can never trade less than 1 wei.
Depending on your requirement, you can decide decimals of your token. For eg, you can keep your decimals to be 8.
So, if you define rate=10, this means 1 wei = 1,000,000,000 tokens
and increasing to 15%, 1 wei = 1.150,000,000
Now even if you use 18 decimal places. When you set rate=10, then if someone transfer 10 wei to you, you need to transfer 10000000000000000000 (10*10^18) token and if you want to pay 15% more, when someone sends you 10 wei, transfer 11500000000000000000 (11.5^10**18) tokens