2017-01-16 7 views

答えて

5

私は考えることができる最も単純な方法は、Rational数値に文字列を変換することです:

arr = ["6/1", "4/1", "911/50"] 

d, m, s = arr.map(&:to_r) 
#=> [(6/1), (4/1), (911/50)] 

そして、次のようにして小数点以下の値を計算します。

lat = d + m/60 + s/3600 
#=> (1092911/180000) 

浮動小数点の値を取得するにはe:

lat.to_f 
#=> 6.071727777777777 
0

あなたはルビーで変換を行うために、次のコードを使用することができます。

arr = exif.gps_latitude 
pic.lat = arr[0].to_f + arr[1].to_f/60 + arr[2].to_f/3600 
pic.lat *= exif.gps_latitude_ref == 'S' ? -1 : 1 

arr = exif.gps_longitude 
pic.lng = arr[0].to_f + arr[1].to_f/60 + arr[2].to_f/3600 
pic.lng *= exif.gps_longitude_ref == 'W' ? -1 : 1 
+0

このコードでは、分母が無視されます。 '50'。 3つの数字は、6°4 '911 "ではなく、6°4' 18.22" – Stefan

関連する問題