我需要比较两个值.一个值price代表某物的当前价格,因此decimal您实际上可以按此价格买入或卖出某物.
另一个值是estimatedPrice数学计算的结果,double因为它只是estimation,你实际上不能做任何"操作"esitmatedPrice
现在我想买price < estimatedPrice.
那么我应该将价格加倍或估计价格为十进制吗?
我明白在投射后我会得到"轻微的另一个"数字,但似乎我没有其他选择.
pho*_*oog 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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11492 次 |
| 最近记录: |