有什么好方法可以测试是否可以将decimal
值转换为double
而不抛出异常,并且最好不要转换为字符串并从中解析?
我可以测试与long
或int
类型的兼容性,如下所示:(尚未测试)
if (value == decimal.Truncate(value))
{
if (value >= int.MinValue && value <= int.MaxValue)
return (int)value;
if (value >= long.MinValue && value <= long.MaxValue)
return (long)value;
return value.ToStringInvariant();
}
// Now try double,else revert to string again
此方法应用于将decimal
值序列化为可以发送到JavaScript的值。在这里,使用了MessagePack,但是JSON应该具有相同的约束。两者都不支持decimal
。
我总是可以将值作为string
发送,但是我想节省一点带宽,并使用可以代表值的最简单的类型(精确度高)。
PS:无法编译:
if (value >= double.MinValue && value <= double.MaxValue)
return (double)value;
我无法将decimal
与double
进行比较。如果这绝对是一条好的道路,那将是一个好的解决方案?