测试十进制值是否可以转换为双精度

go

有什么好方法可以测试是否decimal可以将值转换为double不引发异常,并且最好不转换为字符串并从中解析?

我可以测试与longint类型的兼容性,例如:(尚未测试)

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;

我比不上decimaldouble如果这是一条好的道路,那将是一个好的解决方案?

埃里克·利珀特

有什么好方法可以测试十进制值是否可以转换为双精度而不抛出异常?

static bool CanBeConvertedToDouble(decimal d)
{
  return true;
}

:)

所有小数均可转换为双精度。

请注意,这样做可能会损失大量的精度小数点的精度约为29个小数位;双打只有15个左右。但是,将小数转换为双精度永远不会失去幅度

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法从双精度转换为十进制错误

无法将类型十进制转换为双精度

隐式将十进制转换为双精度或将双精度转换为十进制

将具有时间值“ 0:00”的字符串转换为十进制/双精度值?

将IEEE-754双精度和单精度转换为十进制Java错误

是否可以将最高有效的十进制数字精度转换为二进制并返回十进制而又不丢失有效值6或7.225?

将大十进制转换为不带指数格式的双精度

C#如何精确地将双精度转换为十进制?

将字符串转换为双精度(非十进制)

Spark for Python-无法将字符串列转换为十进制/双精度

将十进制数字从字符串转换为双精度

将计算出的双精度数转换为十进制会纠正精度误差吗?

如何在Matlab中将十进制转换为IEEE双精度浮点二进制?

在 Shiny 中,是否可以提取与给定值不同的输入值(即将百分比转换为十进制)?

如何在双精度双精度和十进制字符串之间转换?

将十进制转换为单精度IEEE 754

双精度十进制位数

将带有千位(和十进制)分隔符的字符串转换为双精度

在C ++中使用atof将带有十进制的字符串转换为双精度

如何将 Scala 数据框中的所有十进制列转换为双精度类型?

如何在JVM中存储双精度值,以及JVM如何从内存中读取其对应的二进制值并将其转换为十进制值?

是否可以使用 do while 将数字转换为以十进制为基数的数字?

再次将字节的十进制值转换为字节的十进制值

将十进制BGR颜色转换为单个RGB十进制值

如何将IEEE 754双精度(64位)格式的十六进制数字转换为十进制数字?

将无符号长整数转换为带有2个精度十进制值的浮点数

将 ASCII 转换为其十进制值

在PHP中将十进制值转换为Unicode字符

无法直接转换为十进制值?