我有一堆geojson数据,可能点完全相同。
30.9694313
我如何隔离最后一个数字并随机增加或减少它在30.9694314或30.9694312上降落?
我想我可以添加或减去0.0000001,但如果在动态浮动长度的情况下如何处理?
答案 0 :(得分:2)
执行此操作的一种方法是获取float的String表示形式,然后将最后一个数字解析为整数。然后,您可以递增/递减它,将其添加回String的子字符串以替换旧的最后一个数字,并将其解析为浮点数。不确定这是否是最有效的方法,但它是第一个让我头脑发热的东西。
编辑:一些帮助您的方法(链接到MDN)
答案 1 :(得分:1)
感谢您的帮助。这就是我提出的。我想可能会有一种更清洁的方式,但这似乎对我有用。谢谢你让我走上正轨。
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);
}