Due to LatLng's 6-digit fixed precision, certain 12-character geohashes will be decoded and then improperly rounded to produce a latitude/longitude value that is incorrect by the geohash specification. This happens for the majority of all possible 12-character geohashes. The magnitude of the error in each case is within one-millionth of a degree latitude and/or longitude. However this also causes SimpleLatLng's geohashing implementation to exhibit instability during round-trips.
Example:
String a = "s00000j202n8";
LatLng x = Geohasher.decode(a); // x = LatLng(0.000000,0.007229)
String b = Geohasher.hash(x); // b = "s00000j202n2"
// s00000j202n8 != s00000j202n2
Due to LatLng's 6-digit fixed precision, certain 12-character geohashes will be decoded and then improperly rounded to produce a latitude/longitude value that is incorrect by the geohash specification. This happens for the majority of all possible 12-character geohashes. The magnitude of the error in each case is within one-millionth of a degree latitude and/or longitude. However this also causes SimpleLatLng's geohashing implementation to exhibit instability during round-trips.
Example: