C# 测试十进制值是否可以转换为双精度
测试C# 测试十进制值是否可以转换为双精度,c#,.net,decimal,C#,.net,Decimal,测试decimal值是否可以转换为double而不引发异常,最好不转换为字符串或从字符串解析,有什么好方法 我可以测试与以下类型的long或int的兼容性:(尚未测试) 我无法将decimal与double进行比较。如果这是一条好的道路,那么什么是好的解决方案呢 测试十进制值是否可以在不引发异常的情况下转换为double的好方法是什么 :) 所有小数都可以转换为双精度 请注意,这样做可能会损失大量的精度。小数点的精度约为29位小数;双人房只有15英镑左右。但将十进制转换为双精度永远不会丢失数值。
decimal
值是否可以转换为double
而不引发异常,最好不转换为字符串或从字符串解析,有什么好方法
我可以测试与以下类型的long
或int
的兼容性:(尚未测试)
我无法将decimal
与double
进行比较。如果这是一条好的道路,那么什么是好的解决方案呢
测试十进制值是否可以在不引发异常的情况下转换为double的好方法是什么
:)
所有小数都可以转换为双精度
请注意,这样做可能会损失大量的精度。小数点的精度约为29位小数;双人房只有15英镑左右。但将十进制转换为双精度永远不会丢失数值。注意,“可以转换而不抛出”和“可以转换而不丢失精度”是我所知道的两件不同的事情。精确性在这里并不重要,因为JavaScript无论如何都无法使用它。引发异常以发现转换失败是不可接受的。我将转换成成成吨的值。在这种情况下,double的范围比decimal的范围大得多,所以您总是能够将decimal转换成double。您可能会丢失精度,因为十进制的精度比十进制高很多位,但如果这不重要。。。
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
if (value >= double.MinValue && value <= double.MaxValue)
return (double)value;
static bool CanBeConvertedToDouble(decimal d)
{
return true;
}