R
You can't derive from a double, nor can there be a T such that Convert.ChangeType results in a value that is a double. Well, of course, except when T is object, and the input value was a double to begin with (because if the target type is object it just returns the input value). So actually the original snippet was right(ish).
Although I would rather just test typeof(T)==typeof(double) || typeof(T)==typeof(float), that's enough for this snippet, as far as I can tell.