我需要比较两个值。
一个值为price
,表示某物的当前价格,因此decimal
因为您实际上可以按此价格购买或出售。
另一个值是estimatedPrice
这是数学计算的结果,所以double
因为它只是estimation
而你实际上不能做任何"操作&# 34;通过这个esitmatedPrice
现在我想购买price < estimatedPrice
。
那么我应该将价格加倍或估计价格为十进制吗?
据我所知,在演员之后,我会得到另一个&#34;轻微的另一个&#34;数字,但似乎我没有其他选择。
答案 0 :(得分:14)
这取决于数据。十进制具有更高的精度;双倍有更大的范围。如果double可能在十进制范围之外,你应该将十进制转换为double(或者你实际上可以编写一个返回结果而不进行转换的方法,如果double值超出小数范围;请参阅下面的示例)。
在这种情况下,双值似乎不可能超出小数范围,所以(特别是因为你正在处理价格数据)你应该将双精度值转换为十进制。
示例(可以使用一些逻辑来处理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 :(得分:4)
decimal vs double! - Which one should I use and when?
如果您更关心精度,请转换为十进制。如果你不是,那就选择双打。
答案 2 :(得分:1)
我建议您转换为十进制。因为看起来你想要操纵货币价值。但我可以给出这个简短的答案:为了准确(专门为金融应用程序操纵金钱价值)应用程序使用小数。如果你喜欢更少的资源和更快的速度,请使用double。
答案 3 :(得分:0)
我之前从未在软件方面处理过价格,但从我所听到的情况来看,很多都是关于整数的。例如,对于$ 1.23,将其存储为整数123.当您将结果输出给用户时,将在最后完成对小数的转换。
同样地,对于您的估计价格,您能否处理(比方说)大100倍的数字?