我在 AS3 中有一个问题,我需要比较一些值类型Number
。我有两个Numbers
。例如,3.10
和3.9
比较两者,3.9 大于 3.10,因为与 0 相比,它降低了 03.9
等3.1
。
这确实有道理。我尝试过使用值类型int
,uint
并且结果相同。我可以做些什么来比较两个值,这将导致3.10
大于3.9
而不必像在小数点处拆分并9
比较10
?
我在 AS3 中有一个问题,我需要比较一些值类型Number
。我有两个Numbers
。例如,3.10
和3.9
比较两者,3.9 大于 3.10,因为与 0 相比,它降低了 03.9
等3.1
。
这确实有道理。我尝试过使用值类型int
,uint
并且结果相同。我可以做些什么来比较两个值,这将导致3.10
大于3.9
而不必像在小数点处拆分并9
比较10
?
不。
3.9 大于 3.10 - 如果不拆分小数点,则无法将 3.10 视为高于 3.9 的数字。
我假设您将其用于版本控制,所以我想提醒您,您的版本比较代码会考虑所有情况。
不是,但..
如果您使用字符串,则可以按点拆分,将每个数字作为整数进行比较。
跟踪(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;
}