AS3で、いくつかの値型を比較する必要があるという問題がありますNumber
。私は2つ持っていNumbers
ます。たとえば3.10
、3.9
2つを比較すると、3.9は3.10よりも大きくなります。これは、。と比較3.9
して0などを削除するため3.1
です。
それは理にかなっています。値型int
とuint
同じ結果を使用してみました。小数で分割して比較する必要がない場合3.10
よりも大きくなる2つの値を比較するために私ができることはありますか?3.9
9
10
AS3で、いくつかの値型を比較する必要があるという問題がありますNumber
。私は2つ持っていNumbers
ます。たとえば3.10
、3.9
2つを比較すると、3.9は3.10よりも大きくなります。これは、。と比較3.9
して0などを削除するため3.1
です。
それは理にかなっています。値型int
とuint
同じ結果を使用してみました。小数で分割して比較する必要がない場合3.10
よりも大きくなる2つの値を比較するために私ができることはありますか?3.9
9
10
いいえ、でも..
文字列を使用する場合は、ドットで分割し、各数値をintとして比較できます。
trace(getHighestVersion( "3.9"、 "2.10")); //出力:3.9
trace(getHighestVersion("3.9", "3.10")); // output: 3.10
trace(getHighestVersion("3.9", "3.9")); // output: 3.9 (same)
trace(getHighestVersion("3.90", "3.10")); // output: 3.90
trace(getHighestVersion("3.9.2.1", "3.9.1.9")); //output: 3.9.1.9
trace(getHighestVersion("3.9.2.1", "3.9.3.0")); //output: 3.9.3.0
function getHighestVersion(version1:String,version2:String):String
{
var list1:Array = version1.split(".");
var list2:Array = version2.split(".");
if (list1.length != list2.length) trace("not equal lengths: " + version1 + " / " + version2);
for(var i:int = 0, leni:uint = list1.length; i < leni; i++)
{
var num1:uint = uint(list1[i]);
var num2:uint = uint(list2[i]);
if (num1 > num2)
{
return version1;
}
if (num1 < num2)
{
return version2;
}
}
trace("both versions are equal: " + version1 + " / " + version2)
return version1;
}
いいえ。
3.9は3.10より大きい-小数点を分割しないと、3.10が3.9より大きい数値と見なされることはありません。
これをバージョン管理に使用していると思いますので、バージョン比較コードではすべての状況が考慮されていることに注意してください。