IMHO, more important than the position of a sign is the amount of friction of your current approaches. Think about this: instead of providing an unique option for users,you're providing the following:
- random amounts: users may be able to enter any amount
- confusing signs: users may use percentage or currency
- confusing sign + amount: users may enter an amount thinking it's fixed and they select percentage. For example: $30 is not the same as 30%
Also, I have no idea what kind of service could be where users enter whatever amount they want and on top of that they will be able to choose if it's a fixed amount or a percentage, so we need a lot more information here, but in the case of percentages, they're a percentage of something, it can't be random.
In short, barring more information, here's what I'd suggest:
- Start defining prices. Nobody will ever buy something without knowing the price
- Set the percentages yourself, and offer them as set options (for example: if product costs $50, you can offer
$12.5, $25, $37.5, $50 for 25% increments)
- Stay put with just one way: fixed amount or percentage, do not confuse your users
- Don't make users think!
And if for some reason you really, really, REALLY need teh user to choose percentages or fixed amounts, just use a stepper, in which the user decided which method to use beforehand. This way, if the user chooses percentage, you'll show a
% sign. Otherwise, you'll show a
$ sign. This way, you'll also be able to validate amounts .
Then again, I'd suggest to really think about this and go with only one method. And whatever method you choose, never, never, EVER let it be random