Nice question @shahzadb13,
When you concatenate a Double value (variablesValues) with a String ("%"), Java will create a new String object with those variables concatenated. In the case that you doesn't concatenate with "%", you're sending a Double value alone to the setText() method, and that method doesn't receive a Double but a String.
You can fix that by sending setText() the value converted to String, that is:
Important: I've edited both answers and added the .getValue() method in the variableValues object.