0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

.NET10:文字と数値

Posted at

画像

生成的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の第1プレビュー版では、この問題を解決する方法が提供されました:

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

さらに、この数値比較オブジェクトを使えば、以下の2つの数値を比較することもできます。これらは文字列ですが、比較した結果は等しいです。

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<string, string>(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 第十一个版本
-----------------
第二个版本

(Translated by GPT)
元のリンク:https://mp.weixin.qq.com/s/dt1Aiq-74F5XhS9J_FUmUw?token=1135395277&lang=zh_CN&wt.mc_id=MVP_325642

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?