Javascript,找到第一个有意义的数字(值范围从87.352到0.0002432)

时间:2014-10-17 08:32:35

标签: javascript gps coordinates

我使用坐标创建了一个GPS系统。

我使用此功能找到了最高和最低的经度和纬度坐标:

var maxLng = 0;
var maxLat = 0;
  var minLng = 180;
  var minLat = 180;
  for(var i=0; i<coordinates.length; i++)
  {

    //get max coordinates (the +90 is to remove negative numbers)
    if (coordinates[i][0]+90 > maxLat)
    {
      maxLat = coordinates[i][0] + 90;
    }

    if (coordinates[i][1]+90 > maxLng)
    {
      maxLng = coordinates[i][1]+ 90;
    }

    //get min coordinates
    if (coordinates[i][0]+90 < minLat)
    {
      minLat = coordinates[i][0] + 90;
    }

    if (coordinates[i][1]+90 < minLng)
    {
      minLng = coordinates[i][1] + 90;
    }
  }

  console.log(maxLat, maxLng,minLat, minLng);

  //calculate distance between max and min points
  var lngDistance = maxLng - minLng;
  var latDistance = maxLat - minLat;

  console.log(lngDistance, latDistance);

这将输出相距最远的2个经度点和纬度点之间的距离,然后我计划用它来创建一个基本的2d地图,如下所示:

enter image description here

我需要转换积分,它们可以是一系列值,例如:

0.0009321 19.332 1.9432123 0.0013432423 0.23432423 0.000034324

我想基本上将所有数字转换为小数点前面的2位有效数字,并将结果存储在数组中,说明我使用了多少次移位。

我希望输出是这样的(原始号码,转换号码,使用的班次):

[0.0009321, 93.21, 4]
[19.332, 19.332, 0]
[1.9432123, 19.432123, 1]
[0.0013432423, 13.432423, 3]
...

我在想,找到第一个有意义的数字,然后计算离小数点有多远。我发现了一些关于使用REGEX执行此操作的帖子,但我之前从未使用过REGEX。

有人可以给我一些指示吗?

干杯。

1 个答案:

答案 0 :(得分:1)

这很有趣。

为你做了一个基本的功能,据我所知,它有效。

function change(data){
    var ret=new Array();
    for(var i=0,len=data.length;i<len;i++){
        // make string from number, remove the dot
        var st=(''+data[i]).replace('.','');
        //remove leading zero's from string
        var no_zero=st.replace(/^0+/,'');
        //make value
        var val=parseInt(no_zero)/(Math.pow(10,no_zero.length-2));
        //calculate amount of steps
        var steps=Math.round(Math.log(Math.round(val/data[i]))/Math.log(10));

        //correction for floating point
        if(data[i]<0.01)steps--;

        ret.push([data[i],val,steps]);
    }
    return ret;
}

a working Fiddle