0

我在 AS3 中有一个问题,我需要比较一些值类型Number。我有两个Numbers。例如,3.103.9

比较两者,3.9 大于 3.10,因为与 0 相比,它降低了 03.93.1

这确实有道理。我尝试过使用值类型intuint并且结果相同。我可以做些什么来比较两个值,这将导致3.10大于3.9而不必像在小数点处拆分并9比较10

4

2 回答 2

2

不。

3.9 大于 3.10 - 如果不拆分小数点,则无法将 3.10 视为高于 3.9 的数字。

我假设您将其用于版本控制,所以我想提醒您,您的版本比较代码会考虑所有情况。

于 2012-05-10T19:02:59.697 回答
2

不是,但..

如果您使用字符串,则可以按点拆分,将每个数字作为整数进行比较。

跟踪(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 回答