2017-04-10 44 views
0

我有一堆geojson数据可能会完全相同。更改浮点数的最后一位

30.9694313

如何将我隔离的最后一个数字和随机增加它或减少它降落在任何30.9694314 30.9694312还是?

我想我可以加或减0.0000001,但如何处理动态浮动长度的事件呢?

+0

因此,从中增加或减去.00000001。你有什么问题?你尝试了什么? – epascarello

+0

请阅读[问]。重要短语:“搜索和研究”和“解释......阻止你自己解决它的任何困难”。 –

+0

问题已编辑 - 关于动态浮动长度。道歉。 Eeesh。 – andehlu

回答

1

做到这一点的一种方法是获取您的浮点数的字符串表示形式,然后将最后一个数字解析为整数。然后,您可以递增/递减它,将它添加回您的字符串的子字符串以替换旧的最后一位数字,并将其解析为浮点数。不知道这是否是最有效的方法,但这是第一个想到我的脑海。

编辑:一些方法来帮助你链接(MDN)

Math.random()

Number.parseFloat(String)

+0

如果你这样做,你可以通过使用str.charAt(str.length)得到字符串的最后一个数字,但我相信你已经知道:-) – Driice

0

感谢您的帮助球员。这是我想出的。我想可能有更清晰的方式,但这似乎对我有用。感谢您让我走上正轨。

noiselocation('-30.12345'); 

function noiselocation(coord){ 

    //num to string and strip special chars 
    var coordstr = coord.toString(); 
    console.log('string: ' + coordstr); 

    //get length 
    var coordstrlength = coordstr.length-1; 
    console.log('length: ' + coordstrlength); 

    //get last char 
    var coordlastchar = coordstr.charAt(coordstrlength); 
    console.log('last char: ' + coordlastchar); 

    //turn back to number 
    coordlastnum = parseInt(coordlastchar); 
    console.log('last num: ' + coordlastnum); 

    //randomly increment up or down 
    var randswitch = Math.floor(Math.random() * 2) + 1; 
    if(randswitch == "1"){ 
     coordlastnum++; 
    }else{ 
     coordlastnum--; 
    } 
    console.log('last num after rand: ' + coordlastnum); 

    //replace last char on string 
    var newcoordstr = coordstr.slice(0, -1) + coordlastnum; 
    console.log('new string: ' + newcoordstr); 

    //turn string back to num 
    newcoordnum = parseFloat(newcoordstr); 
    console.log('new num: ' + newcoordstr); 

}