为什么使用 double.Parse()
并转换为 decimal
比调用 decimal.Parse()
更快?
考虑以下内容:
string stringNumber = "18.34";
double dResult = 0d;
decimal mResult = 0m;
for (int i = 0; i < 9999999; i++)
{
mResult = (decimal)double.Parse(stringNumber);
mResult = decimal.Parse(stringNumber);
}
在VS2017分析器(.NET框架v4.7)中,以下度量结果如下:
![Performance metrics](https://istack.dev59.com/EKXbm.webp)
在分析器中出现这种情况的应用程序需要运行10多天,因此这种小差异相当于数小时的运行时间。理解原因很重要。我可以看到decimal.Parse()调用了oleaut32.dll,但是......是怎么回事?
decimal
类型可以精确表示给定精度的十进制数,而double
则不能。因此,先将数据解析为double
类型再转换为decimal
可能会得到不同的结果。 - juharr