2017-04-10 46 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); 

}