2017-04-10 13 views
0

私はmay pointsが全く同じであるgeojsonデータの束を持っています。浮動小数点の最後の桁を変更する

30.9694313

どのように私はそれが30.9694314 30.9694312かのどちらかに着陸最後の数とランダムインクリメントまたはデクリメント、それを分離するのでしょうか?

私は0.0000001を加算または減算することができますが、ダイナミックフロートの長さの場合にこれを処理する方法は?

+0

したがって、.00000001を加算または減算します。あなたの問題は何ですか?何を試しましたか? – epascarello

+0

[ask]をお読みください。重要なフレーズ:「検索と研究」と「あなたがそれを自分で解決することを妨げた困難を説明する」 –

+0

質問が編集されました - その動的フロートの長さです。謝罪。 Eeesh。 – andehlu

答えて

1

これを行う1つの方法は、フロートの文字列表現を取得し、最後の数字を整数として解析することです。次に、増分/減分し、Stringの部分文字列に追加して最後の最後の数字を置き換えて、floatとして解析します。これが最も効率的な方法であるかどうかはわかりませんが、それは私の頭の中で最初に浮かぶことです。

編集:あなたの助けみんなのためにあなたを助けるためにいくつかの方法(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); 

} 
関連する問題