ロケールによる数値の書式やらなんやら。以前の話をちょっと混ぜながら。
少し前に書いたエントリがまだ気になってもう少し調べた。
以前のエントリで、小数点入りの位置情報の小数点がカンマになっているという話を出したが、それをもう少し調べた話。
CSVがおかしい、、、それってもしかしてロケールや言語設定とかが原因では? - name_untitledのエッセイ
まず、以前CSVがおかしいと言っていたのは、位置情報をCSVとして出力した際に、位置情報の小数点の区切りがピリオドでなく、カンマとなっているという話。現時点ではデグレの可能性も否定できないが、あくまでそれを否定した前提で、、、。
位置情報は、Locationクラスで扱われ、Location.getLatitude、Location.getLongtitudeで取得出来る。そして、いずれもdouble型の値である。そのため、この値の小数点がカンマで表示されるのは書式が変わってしまっているため。そこで、検証のためLocationをロケールを指定して出力してみる。
@Override
public void onLocationChanged(Location location) {
// 緯度の表示
TextView tv_lat = (TextView) findViewById(R.id.Latitude);
String latVal = convertDoubleToString(Locale.FRANCE,"###,###.###",location.getLatitude());
//tv_lat.setText("Latitude:"+location.getLatitude());
tv_lat.setText("Latitude:"+latVal);
// 経度の表示
TextView tv_lng = (TextView) findViewById(R.id.Longitude);
String lonVal = convertDoubleToString(Locale.FRANCE,"###,###.###",location.getLongitude());
//tv_lng.setText("Latitude:"+location.getLongitude());
tv_lng.setText("Latitude:"+lonVal);
}
↑このコードで出力された画面がこれ。
どうもロケールが怪しい。
旧宗主国であるフランスを指定してみました。今の中高年にとっては外国語はまずフランス語だったらしいので、、、。
LAOS Language in Java possible??
このサイト参考にしました。
ありがとうございました。