将数字与小数进行比较

时间:2012-05-10 18:51:46

标签: actionscript-3 numbers decimal

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

比较两者,3.9大于3.10,因为它降低了0,就像比较3.93.1一样。

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

2 个答案:

答案 0 :(得分:2)

没有。

3.9大于3.10 - 如果不分割小数点,3.10将不会被认为是高于3.9的数字。

我假设你正在使用它进行版本控制,所以我只是要提醒你的版本比较代码会考虑所有情况。

答案 1 :(得分:1)

不,但是......

如果你使用字符串,你可以分割点,将每个数字比作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;
}