2011-10-30 3 views
0

私は、緯度と経度を比較するために値の大きさと大きさを小さくしようとしています。私はラウンドする緯度、経度、および桁数を渡すことができる必要があります。 Iは、例えば、これらの値がある場合:一致するものとして小数点のあるパッドゼロ

18.363285 -67.18024 
18.448619 -67.13422  <----- Only second value matched 
18.498987 -67.13699  <----- Both values matched 
18.465162 -67.141486 
18.182151 -66.9588 

は中央の選択を、私は、緯度として18.49(1234567)に-67.13(1234567)を通過する経度及び数などとして丸める小数私は与えられた緯度と経度を下にしての位置に下げ、次に0.02を加算して上限を得ることを計画しています。

私は最後の部分で立ち往生しています。私は4を入力とし、0.00004を返す数学的関数を考えることはできません。

これを過度に複雑化していない限り、公差内の値のセットを照合する簡単な方法があります。

EDIT:たとえば、私はこれらの数字に渡し、戻ってこれらの値を取得する必要があります:

In Out 
1 0.01 
2 0.001 
3 0.0001 
4 0.00001 
5 0.000001 
6 0.0000001 
+3

「4.0/100000.0」について – Yahia

+0

はい、5/100000は0.000005を返しません。私は 'Convert.ToString(Enumerable.Repeat(" 0 "、numDigits))'を使うのはちょっと嫌ですが、それは間違っています。 – Echilon

+0

@エチロン「5/100000d」。ダブルスで作業していることを確認する必要があります。そうしないと、整数計算が切り詰められます。全体の値の1つを指定するには、 "d"を追加してdoubleを指定します。 –

答えて

1
private double Calc(int places) 
    { 
     return 1/(Math.Pow(10, places + 1)); 
    } 
+0

ありがとう、それは動作します。 – Echilon

4

使用Math.Abs​​:

if (Math.Abs(value1 - value2) <= 0.01) { 
    // close enough 
    // etc... 
} 

Math.Pow(10から分数の計算、-numberOfDigitsInTheFraction);