Actionscript 3 ActionScript 3中的中值计算
我有一个数字数组,我想计算中值。 当数组为奇数时,计算正常,当出现偶数奇数时Actionscript 3 ActionScript 3中的中值计算,actionscript-3,Actionscript 3,我有一个数字数组,我想计算中值。 当数组为奇数时,计算正常,当出现偶数奇数时 private var numbers:String = "2,5,3,4,6,1"; private var array:Array = numbers.split(","); private function getMedian(array:Array):Number { var sortnums:Array = array.sort(Array.NUMERIC); var length:Number = s
private var numbers:String = "2,5,3,4,6,1";
private var array:Array = numbers.split(",");
private function getMedian(array:Array):Number {
var sortnums:Array = array.sort(Array.NUMERIC);
var length:Number = sortnums.length;
var mid1:Number; var mid2:Number; var median:Number;
if(length % 2 == 0){
mid1 = length / 2; trace("mid1: "+mid1);
mid2= ((length - 1) / 2)-0.5; trace("mid2: "+mid2);
trace ("mid1: "+sortnums[mid1]+", mid2: "+sortnums[mid2]);
median = (sortnums[mid1] + sortnums[mid2]) / 2;
}else{
mid1 = (length / 2)-0.5
median = sortnums[mid1]
}
trace (median);
return median;
}
结果是21.5,但应该是3.5
mid1和mid2是阵列中的一个位置
有人能帮忙吗?试试这个(为了整洁):
顺便说一句,我相当肯定您的代码运行良好,问题是您在这里将其作为字符串串联而不是数字和:
median = (sortnums[mid1] + sortnums[mid2]) / 2;
这意味着您实际上是将字符串1.5
添加到2
上,得到21.5
而不是3.5
尝试修改代码,使其如下所示:
median = (Number(sortnums[mid1]) + Number(sortnums[mid2])) / 2;
试试这个(为了整洁):
顺便说一句,我相当肯定您的代码运行良好,问题是您在这里将其作为字符串串联而不是数字和:
median = (sortnums[mid1] + sortnums[mid2]) / 2;
这意味着您实际上是将字符串1.5
添加到2
上,得到21.5
而不是3.5
尝试修改代码,使其如下所示:
median = (Number(sortnums[mid1]) + Number(sortnums[mid2])) / 2;
请注意,在进行计算之前,您应该对字符串值进行清理并将其转换为数字值。@joncys是的,这当然是首选。我的初始函数需要一个已经包含数字的数组来完成这个任务。[在]Marty-那个评论必须作为对OP帖子的评论,而不是你的答案,我的错误。(你怎么用空格引用名字?!)@joncys认为你只是截断了空格,即MartyWallace:)在一个完整的旁注中,你应该在计算之前清理并将字符串值转换为数字值。@joncys是的,这当然是首选。我的初始函数需要一个已经包含数字的数组来完成这个任务。[在]Marty-那个评论必须作为对OP帖子的评论,而不是你的答案,我的错误。(你怎么用空格引用名字?!)@joncys认为你只是截断了空格,即MartyWallace:)