Python’da, "545.2222"
gibi bir sayısal stringi float değerine nasıl dönüştürebiliriz? Ya da “30” şeklindeki bir dizeyi tamsayıya dönüştürmek için ne yapmak gerekir? float()
ve int()
fonksiyonlarını kullanabiliriz:
>>> a = "545.2222"
>>> float(a)
545.22220000000004
>>> int(float(a))
545
Yerelleştirme ve virgül kullanımı
Bazı özel durumlar için bir sayının dize gösteriminde virgül kullanılabilir. Örneğin float("545,545.2222")
burada bir hata mesajı verir. Bu durumda dizeyi sayılara dönüştürmek ve virgülleri doğru yorumlamak için locale
modülüne ait metotları kullanın. locale.atof
yerel ayar istenen sayı kuralı için ayarlandıktan sonra float’a dönüştürür.
Örnek 1 — ABD sayı kuralları
Amerika Birleşik Devletleri ve İngiltere’de virgül binlik ayırıcı olarak kullanılabilir. Amerika yereli bu örnekte, virgül ayırıcı olarak düzgün bir şekilde işlenir:
>>> import locale
>>> a = u'545,545.2222'
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
'en_US.UTF-8'
>>> locale.atof(a)
545545.2222
>>> int(locale.atof(a))
545545
>>>
Örnek 2 — Avrupa sayı kuralları
Dünya ülkelerinin çoğunda virgüller dönemler yerine ondalık işaretler için kullanılır. Fransızca için bu örnekte virgül ondalık işaret olarak işlenir:
>>> import locale
>>> b = u'545,2222'
>>> locale.setlocale(locale.LC_ALL, 'fr_FR')
'fr_FR'
>>> locale.atof(b)
545.2222
locale.atoi
metodu da kullanılabilir, ancak o zaman bağımsız değişken bir tamsayı olmalıdır.