I always use "1" which has been good enough for me, so I don't have a specific solution for you. I did however notice this odd comment in the SDK
Code:
void pfnEmitSound (edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch);
It looks like the volume used to be specified as an int instead of a float.
Try specifying the volume in increments that are whole numbers?