public static char ToUint16(object val)
{
double d = ToNumber(val);
int i = (int)d;
if (i == d)
{
return (char)i;
}
if (d != d || d == double.PositiveInfinity || d == double.NegativeInfinity)
{
return 0;
}
d = (d >= 0) ? Math.Floor(d) : System.Math.Ceiling(d);
int int16 = unchecked((int)(0x10000));
i = (int)System.Math.IEEERemainder(d, int16);
return (char)i;
}