更改浮动的最后一位数

时间:2017-04-10 20:25:20

标签: javascript

我有一堆geojson数据,可能点完全相同。

30.9694313

我如何隔离最后一个数字并随机增加或减少它在30.9694314或30.9694312上降落?

我想我可以添加或减去0.0000001,但如果在动态浮动长度的情况下如何处理?

2 个答案:

答案 0 :(得分:2)

执行此操作的一种方法是获取float的String表示形式,然后将最后一个数字解析为整数。然后,您可以递增/递减它,将其添加回String的子字符串以替换旧的最后一个数字,并将其解析为浮点数。不确定这是否是最有效的方法,但它是第一个让我头脑发热的东西。

编辑:一些帮助您的方法(链接到MDN)

Math.random()

Number.parseFloat(String)

答案 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);

}