我在AS3中遇到了一个问题,我需要比较一些值类型Number
。我有两个Numbers
。例如,3.10
和3.9
比较两者,3.9大于3.10,因为它降低了0,就像比较3.9
和3.1
一样。
这确实有道理。我尝试使用值类型int
和uint
,结果相同。我可以做些什么来比较导致3.10
大于3.9
的两个值,而不必像小数点拆分并将9
与10
进行比较?
答案 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;
}