The value you provide for the Work field should be of type Duration (having Unit & Value). This will allow to to provide the unit.
When you say C# API, do you mean the SOAP/Web services API?
I don't understand how you concluded "CreateAndRetrieve accepts only integer and not a decimal value".
The Value property of Duration is of type double, meaning you can certainly enter non integer numbers.
Hope this helps,