0

AS3で、いくつかの値型を比較す​​る必要があるという問題がありますNumber。私は2つ持っていNumbersます。たとえば3.103.9

2つを比較すると、3.9は3.10よりも大きくなります。これは、。と比較3.9して0などを削除するため3.1です。

それは理にかなっています。値型intuint同じ結果を使用してみました。小数で分割して比較する必要がない場合3.10よりも大きくなる2つの値を比較するために私ができることはありますか?3.9910

4

2 に答える 2

2

いいえ、でも..

文字列を使用する場合は、ドットで分割し、各数値を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;
}
于 2012-05-11T12:27:23.773 に答える
2

いいえ。

3.9は3.10より大きい-小数点を分割しないと、3.10が3.9より大きい数値と見なされることはありません。

これをバージョン管理に使用していると思いますので、バージョン比較コードではすべての状況が考慮されていることに注意してください。

于 2012-05-10T19:02:59.697 に答える