要比较双精度和十进制,我应该将双精度转换为十进制或十进制转换为双精度

本文关键字:十进制 双精度 转换 比较 我应该 | 更新日期: 2023-09-27 18:34:29

我需要比较两个值。一个值是price,它代表某物的当前价格,因此decimal,因为您实际上可以通过此价格买卖某物。

另一个值是estimatedPrice,它是数学计算的结果,所以double因为它只是estimation,你实际上不能通过这个esitmatedPrice做任何"操作"

现在我想买如果price < estimatedPrice.

那么我应该将价格转换为双倍还是将估计价格转换为十进制?

我知道选角后我会得到"稍微多一点"的数字,但似乎我没有其他选择。

要比较双精度和十进制,我应该将双精度转换为十进制或十进制转换为双精度

这取决于数据。 十进制具有更高的精度;双倍具有更大的范围。 如果双精度值可能超出小数范围,则应将小数转换为双精度(或者,如果双精度值超出十进制范围,则可以编写一个返回结果而不进行强制转换的方法;请参阅下面的示例(。

在这种情况下,双精度

值似乎不太可能超出十进制范围,因此(特别是因为您正在使用价格数据(您应该将双精度转换为十进制。

示例(可以使用一些逻辑来处理 NaN 值(:

private static int Compare(double d, decimal m)
{
    const double decimalMin = (double)decimal.MinValue;
    const double decimalMax = (double)decimal.MaxValue;
    if (d < decimalMin) return -1;
    if (d > decimalMax) return 1;
    return ((decimal)d).CompareTo(m);
}

十进制与双精度! - 我应该使用哪一个,什么时候?

如果您更关心精度,请转换为十进制。如果你不是,那就选择双打。

我以前从未在软件中使用过价格,但据我所知,许多都处理整数。 例如,对于 $1.23,将其存储为整数 123。 转换为小数是在最后将结果输出给用户时完成的。

同样,对于您的估计价格,您能处理(例如(大 100 倍的数字吗?

我建议您转换为十进制。 因为似乎你想操纵金钱价值。 但我可以给出这个简短的答案:对于准确(专门用于金融应用程序操纵货币价值(应用程序使用十进制。 如果您喜欢更少的资源和更快的速度,请使用双倍。