2011-10-30 66 views
0

我试图让粗略的大于和小于数值来比较经度和纬度。我需要能够传入经纬度和四舍五入的数字。如果我有例如这些值:选择中间的一个匹配用小数点填充零点

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的数学函数。

除非我过于复杂,有一个简单的方法来匹配容差范围内的一组值。

编辑:比如,我需要这些数字传递和获取这些值回:

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

@Echilon'5/100000d'。你需要确保你正在使用双打,否则你会最终得到截断的整数数学。您可以通过追加“d”来指定整个值中的一个。 –

回答

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