gpt4 book ai didi

c# - Double.TryParse 或 Convert.ToDouble - 哪个更快更安全?

转载 作者:IT王子 更新时间:2023-10-29 03:39:20 26 4
gpt4 key购买 nike

我的应用程序使用 VSTO 读取 Excel 文件并将读取的数据添加到 StringDictionary .它仅添加具有几位数字的数据(1000 1000,2 1000,34 - 逗号在俄罗斯标准中是分隔符)。

有什么方法可以更好地检查当前字符串是否为合适的数字?

object data, string key; // data had read

try
{
Convert.ToDouble(regionData, CultureInfo.CurrentCulture);
dic.Add(key, regionData.ToString());
}
catch (InvalidCastException)
{
// is not a number
}

double d;
string str = data.ToString();
if (Double.TryParse(str, out d)) // if done, then is a number
{
dic.Add(key, str);
}

我必须使用 StringDictionary而不是 Dictionary<string, double>因为下面的解析算法问题。

我的问题:哪种方式更快?哪个更安全?

最好还是调用Convert.ToDouble(object)Convert.ToDouble(string)

最佳答案

我在 Release模式下做了一个快速的非科学测试。我在两种方法中使用了两个输入:“2.34523”和“badinput”并迭代了 1,000,000 次。

有效输入:

Double.TryParse = 646ms
Convert.ToDouble = 662 ms

正如预期的那样,差别不大。对于所有意图和目的,对于有效输入,这些都是相同的。

无效输入:

Double.TryParse = 612ms
Convert.ToDouble = ..

嗯..它运行了很长时间。我使用 1,000 次迭代重新运行了整个过程,并且输入错误的 Convert.ToDouble 花费了 8.3 秒。平均下来,需要2个多小时。我不在乎测试有多基础,在无效输入的情况下,Convert.ToDouble 的异常引发会破坏您的性能。

因此,这是对 TryParse 的另一次投票,并有一些数字支持它。

关于c# - Double.TryParse 或 Convert.ToDouble - 哪个更快更安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/586436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com