There are a number of different approaches that could be built into an IF() statement (for example) that would deliver the results.
However, are these formats the only possibilities or are there more ways and positions in which the decimalized value may (or may not) appear?
If I work through an example of one way (maybe more than one way?) to extract the information you want will you feel OK about applying and extended that approach to other variants?
This seems to work if the 3 part string to be split is called "Datafield". My field is defined as CHARACTER rather than numeric to preserve the leading zeros but could of course be converted to numeric easily enough for calcualtions if required.
If(Instr(".",LSPLIT(Datafield,3," ",1))>0,LSPLIT(Datafield,3," ",1),
If(Instr(".",LSPLIT(Datafield,3," ",2))>0,LSPLIT(Datafield,3," ",2),
Basically this checks for a "." somewhere in the string. If not found the value is set to 0.0000.
The next IF LSPLITS the string and performs the same check on the first part of the string using a space separator.
The one after that checks the second part of the split string (I kept the basic formula the same even whe not really required to for easier cut and paste when creating and also subsequent maintenance if required.)
If the word "Value" appears it means the "." exists somewhere in the string but not in the first or second split components.
I looks a bit unpleasant and I may have left some options for error on different data samples but hopefully it will get you close to a solution.
There may well be a neater way to do do it and I fully expect someone to be along soon with a better answer but in the meantime this should work.