如何对浮点数数组求和
How to sum of arrays of floating point numbers
如何对浮点数数组求和..作为数组浮点数来自距离结果的结果 Google 映射 api 中的方法 Location.distanceBetween(latStart, longStart, latB, longB, results);
,i'我正在尝试这个,但在某些时候它会减少,它应该总是增加。我错过了什么?
编辑:
public float total(ArrayList<LatLng> listPoints){
if(listPoints.size()==2){
listPoints.clear();
}
listPoints.add(latLng);
float[] results = new float[2];
float sum = 0.0f;
for (int z = 0; z < listPoints.size(); z++) {
if(listPoints.size() == 1){
latStart = listPoints.get(z).latitude;
longStart = listPoints.get(z).longitude;
Toast.makeText(this, "listPoint 1", Toast.LENGTH_SHORT).show();
}else if(listPoints.size() == 2){
latB = listPoints.get(z).latitude;
longB = listPoints.get(z).longitude;
Toast.makeText(this, "listPoint 2", Toast.LENGTH_SHORT).show();
}
Location.distanceBetween(latStart, longStart, latB, longB, results);
sum+=results[0];
}
tvJarakTotal.setText(sum + "");
return sum;
}
编辑:
随着用户位置的移动,距离来自 onLocationChanged()
方法,
编辑:
我终于自己找到了解决方案,方法是使用 sharedPreference 创建一些技巧。但接受的答案对问题是正确的。
您认为您在上面的代码中做了什么并不完全清楚。首先,Location#distanceBetween
API取对纬度经度值,即两个地理点,然后returns它们之间的距离在 results[0]
(q.v. documentation).
接下来,不清楚起点和终点是什么。我在下面的回答是假设 listPoints
是一组点(开始或结束),而值 latB
和 longB
是一组固定的 starting/ending 点.如果没有这个假设,这里真的无法给出答案。
public float total(ArrayList<LatLng> listPoints) {
float[] results;
float sum = 0.0f;
for (int z=0; z < listPoints.size(); z++) {
double latStart = listPoints.get(z).latitude;
double longStart = listPoints.get(z).longitude;
Location.distanceBetween(latStart, longStart, latB, longB, results);
sum += results[0];
tvJarak.setText(sum + "");
}
return sum;
}
请仔细查看您的代码。
float[] results = new float[listPoints.size()];
results
变量被声明为局部变量,但尚未用任何值初始化。
在这种情况下,它具有随机值。
这就是为什么sum
给出随机负值。
float[] results = new float[listPoints.size()];
在这种情况下,您的结果数组存储了 listPoints 数组的大小。之后,您尝试使用 listPointers 数组大小来迭代结果数组。
假设您:- float [] results = new [2];
现在你尝试在你体内一次又一次地添加相同的值以进行循环。请确保您的场景是否正确。
您应该在代码中存储 api 日期软件。像这样:
lat = listPoints.get(z).latitude;
long = listPoints.get(z).longitude;
如果你愿意,你可以这样做,
public float total(ArrayList<LatLng> listPoints) {
float[] results;
float sum = 0.0f;
float lat = 0.0f, long = 0.0f;
for (int z=0; z < listPoints.size(); z++) {
lat = listPoints.get(z).latitude;
long = listPoints.get(z).longitude;
Location.distanceBetween(lat, long, latB, longB, results);
sum+=results[z];
tvJarak.setText(sum + "");
}
return sum;
}
如何对浮点数数组求和..作为数组浮点数来自距离结果的结果 Google 映射 api 中的方法 Location.distanceBetween(latStart, longStart, latB, longB, results);
,i'我正在尝试这个,但在某些时候它会减少,它应该总是增加。我错过了什么?
编辑:
public float total(ArrayList<LatLng> listPoints){
if(listPoints.size()==2){
listPoints.clear();
}
listPoints.add(latLng);
float[] results = new float[2];
float sum = 0.0f;
for (int z = 0; z < listPoints.size(); z++) {
if(listPoints.size() == 1){
latStart = listPoints.get(z).latitude;
longStart = listPoints.get(z).longitude;
Toast.makeText(this, "listPoint 1", Toast.LENGTH_SHORT).show();
}else if(listPoints.size() == 2){
latB = listPoints.get(z).latitude;
longB = listPoints.get(z).longitude;
Toast.makeText(this, "listPoint 2", Toast.LENGTH_SHORT).show();
}
Location.distanceBetween(latStart, longStart, latB, longB, results);
sum+=results[0];
}
tvJarakTotal.setText(sum + "");
return sum;
}
编辑:
随着用户位置的移动,距离来自 onLocationChanged()
方法,
编辑: 我终于自己找到了解决方案,方法是使用 sharedPreference 创建一些技巧。但接受的答案对问题是正确的。
您认为您在上面的代码中做了什么并不完全清楚。首先,Location#distanceBetween
API取对纬度经度值,即两个地理点,然后returns它们之间的距离在 results[0]
(q.v. documentation).
接下来,不清楚起点和终点是什么。我在下面的回答是假设 listPoints
是一组点(开始或结束),而值 latB
和 longB
是一组固定的 starting/ending 点.如果没有这个假设,这里真的无法给出答案。
public float total(ArrayList<LatLng> listPoints) {
float[] results;
float sum = 0.0f;
for (int z=0; z < listPoints.size(); z++) {
double latStart = listPoints.get(z).latitude;
double longStart = listPoints.get(z).longitude;
Location.distanceBetween(latStart, longStart, latB, longB, results);
sum += results[0];
tvJarak.setText(sum + "");
}
return sum;
}
请仔细查看您的代码。
float[] results = new float[listPoints.size()];
results
变量被声明为局部变量,但尚未用任何值初始化。
在这种情况下,它具有随机值。
这就是为什么sum
给出随机负值。
float[] results = new float[listPoints.size()];
在这种情况下,您的结果数组存储了 listPoints 数组的大小。之后,您尝试使用 listPointers 数组大小来迭代结果数组。
假设您:- float [] results = new [2];
现在你尝试在你体内一次又一次地添加相同的值以进行循环。请确保您的场景是否正确。
您应该在代码中存储 api 日期软件。像这样:
lat = listPoints.get(z).latitude;
long = listPoints.get(z).longitude;
如果你愿意,你可以这样做,
public float total(ArrayList<LatLng> listPoints) {
float[] results;
float sum = 0.0f;
float lat = 0.0f, long = 0.0f;
for (int z=0; z < listPoints.size(); z++) {
lat = listPoints.get(z).latitude;
long = listPoints.get(z).longitude;
Location.distanceBetween(lat, long, latB, longB, results);
sum+=results[z];
tvJarak.setText(sum + "");
}
return sum;
}