If you are going to cast a variable, you’re most likely doing what’s known as a downcast. This means that you’re taking the Object and casting it into a more “specific” type of Object. Here’s an example:
Object aSentenceObject = 'This is just a regular sentence'; String aSentenceString = (String)aSentenceObject;
also you can use "upcast"
String aSentenceString = 'This is just another regular sentence'; Object aSentenceObject = (Object)aSentenceString;
as you can see from example, for doing casting you have to have inheritance between classes. Double and String don't have such inheritance.
use Double.valueOf method