生成式AI早期有一个测试题,就是让AI回答0.9和0.11那个大,早先的版本的AI回答0.11大,还引来大家对AI“智力”的讨论。今天,咱们说一下在不同的场景下,0.11还真比0.9大看这样一个实例:
foreach (string version in new[] { “v0.0.0.1”, “v0.0.0.2”, “v0.0.0.11” }.Order())
{
Console.WriteLine(version);
}
运行结果如下,它是按ASCALL的序列进行输出的:
v0.0.0.1
v0.0.0.11
v0.0.0.2
但从版本号这个角度看,应该是v0.0.0.2比v0.0.0.11小。.NET10的第一个预览版带来了解决方案:
var numericStringComparer = StringComparer.Create(CultureInfo.CurrentCulture, CompareOptions.NumericOrdering);
foreach (string version in new[] { “v0.0.0.1”, “v0.0.0.2”, “v0.0.0.11” }.Order(numericStringComparer))
{
Console.WriteLine(version);
}
运行结果:
v0.0.0.1
v0.0.0.2
v0.0.0.11
另外用这个数字比较对象还可以比较如下两个数字,虽然是字符串,但比较的结果是相等。
var numericStringComparer = StringComparer.Create(CultureInfo.CurrentCulture, CompareOptions.NumericOrdering);
Console.WriteLine(numericStringComparer.Equals(“01008”, “1008”));
再看一个在集合中的应用,在排序字典中,使用数字比较对象
var numericStringComparer = StringComparer.Create(CultureInfo.CurrentCulture, CompareOptions.NumericOrdering);
var versions = new SortedDictionary(numericStringComparer)
{
[“v0.0.0.11”] = “第十一个版本”,
[“v0.0.0.1”] = “第一个版本”,
[“v0.0.0.2”] = “第二个版本”,
};
foreach (var version in versions)
{
Console.WriteLine($”{version.Key} {version.Value}”);
}
Console.WriteLine(“—————–“);
Console.WriteLine(versions[“v0.0.0.02”]);
结果如下:”v0.0.0.02″与”v0.0.0.2″是相同的
v0.0.0.1 第一个版本
v0.0.0.2 第二个版本
v0.0.0.11 第十一个版本
第二个版本
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/425493.html