小数分隔符的问题
Problems with decimal separator
我有 latitude/longitude 个数字,例如:-4726786457893145
但我需要一个小数分隔符,例如:-47.26786457893145
我试过 'format' 或 'for' 结构但没有成功。我什至转换为列表,然后插入一个点,然后再次转换为浮点数,但不适用于所有数字,我不知道为什么。
我很感激你的帮助。谢谢
这是我的部分代码:
latitude = []
longitude = []
for i in range(len(data['Latitude'])):
a = list(str(data['Latitude'][i].replace(',','')))
a.insert(3,'.')
str1 = ''.join(a)
latitude.append(float(str1))
a = list(str(data['Longitude'][i].replace(',','')))
a.insert(3,'.')
str1 = ''.join(a)
longitude.append(float(str1))
看起来您正在删除 ,
而不是尝试将 .
插入到固定位置。用 .replace(',','.')
替换一个应该更正确
比起您的代码片段将看起来像这样(经过一些简化):
latitude = [lat.replace(',','.') for lat in data['Latitude']]
longitude = [lon.replace(',','.') for lon in data['Longitude']]
我做的这个函数...可以写得更清楚...将 -4726786457893145 变成 -47.26786457893145.
def decimal_add(n):
if n < 0:
sign = -1
int_part = float(str(n)[1:3])
decimal_part = float(str(n)[3:])/10**(len(str(n))-3)
else:
sign = 1
int_part = float(str(n)[0:2])
decimal_part = float(str(n)[2:])/10**(len(str(n))-2)
number = (int_part+decimal_part) * sign
return number
来自 jupyter notebook 的示例:
我有 latitude/longitude 个数字,例如:-4726786457893145
但我需要一个小数分隔符,例如:-47.26786457893145
我试过 'format' 或 'for' 结构但没有成功。我什至转换为列表,然后插入一个点,然后再次转换为浮点数,但不适用于所有数字,我不知道为什么。 我很感激你的帮助。谢谢
这是我的部分代码:
latitude = []
longitude = []
for i in range(len(data['Latitude'])):
a = list(str(data['Latitude'][i].replace(',','')))
a.insert(3,'.')
str1 = ''.join(a)
latitude.append(float(str1))
a = list(str(data['Longitude'][i].replace(',','')))
a.insert(3,'.')
str1 = ''.join(a)
longitude.append(float(str1))
看起来您正在删除 ,
而不是尝试将 .
插入到固定位置。用 .replace(',','.')
替换一个应该更正确
比起您的代码片段将看起来像这样(经过一些简化):
latitude = [lat.replace(',','.') for lat in data['Latitude']]
longitude = [lon.replace(',','.') for lon in data['Longitude']]
我做的这个函数...可以写得更清楚...将 -4726786457893145 变成 -47.26786457893145.
def decimal_add(n):
if n < 0:
sign = -1
int_part = float(str(n)[1:3])
decimal_part = float(str(n)[3:])/10**(len(str(n))-3)
else:
sign = 1
int_part = float(str(n)[0:2])
decimal_part = float(str(n)[2:])/10**(len(str(n))-2)
number = (int_part+decimal_part) * sign
return number
来自 jupyter notebook 的示例: