Конвертујте стринг бројева стр у број инт, флоат у Питхон-у

Бусинесс

Ако желите да конвертујете низ бројева у нумеричке вредности у Питхон-у, користите инт() да конвертујете у целе бројеве и флоат() да претворите у бројеве са покретним зарезом.

Овде је објашњено следеће, заједно са примером кода.

  • Основна употреба
    • Претворите нумеричке низове у целе бројеве:int()
    • Претворите низ бројева у бројеве са покретним зарезом:float()
  • Посебна употреба
    • Конвертује низове у бинарном, окталном и хексадецималном запису у бројеве
    • Конвертује стрингове у експоненцијалној нотацији у нумеричке вредности
    • Претворите низове арапских бројева пуне ширине у бројеве
    • Претворите низ кинеских знакова у бројеве

Да бисте претворили нумеричку вредност у стринг, користите стр().

Ако желите да конвертујете бројеве или низове у различите формате, користите функцију формат() или метод стринга стр.формат(). Затим можете конвертовати у 0-филл, бинарни, октални, хексадецимални, експоненцијални запис, итд. Погледајте следећи чланак за детаље.

Такође може да конвертује листу стрингова у листу бројева. За детаље погледајте следећи чланак.

Претворите нумеричке низове у целе бројеве:int()

Можете користити инт() да конвертујете низ бројева у бројеве целобројног типа.

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

Децимале, укључујући децималне тачке, и низови одвојени зарезима ће резултирати грешком вредности.

# print(int('1.23'))
# ValueError: invalid literal for int() with base 10: '1.23'

# print(int('10,000'))
# ValueError: invalid literal for int() with base 10: '10,000'

Стрингови раздвојени зарезима се могу конвертовати уклањањем зареза (замена празним стрингом) коришћењем методе реплаце().

print(int('10,000'.replace(',', '')))
# 10000

Претворите низ бројева у бројеве са покретним зарезом:float()

Функција флоат() се може користити за претварање низа бројева у тип броја са помичним зарезом.

print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>

Низови са изостављеним целобројним делом се конвертују тако што се целобројни део допуњује са 0.

print(float('.23'))
# 0.23

Целобројни низови се такође конвертују у бројеве са покретним зарезом.

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Конвертује низове у бинарном, окталном и хексадецималном запису у бројеве

Ако је основа наведен као други аргумент за инт(), стринг се може конвертовати у цео број инт посматрањем као бинарни, октални, хексадецимални итд.

print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256

Као иу претходним примерима, ако се изостави, број се сматра децималним бројем.

print(int('100', 10))
print(int('100'))
# 100
# 100

Ако је основа постављена на 0, конверзија се заснива на префиксу стринга. У наставку погледајте префиксе стрингова.

  • 0b
    • 0B
  • 0o
    • 0O
  • 0x
    • 0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256

Префикси и хексабецеде могу бити велика или мала.

print(int('FF', 16))
print(int('ff', 16))
# 255
# 255

print(int('0xFF', 0))
print(int('0XFF', 0))
print(int('0xff', 0))
print(int('0Xff', 0))
# 255
# 255
# 255
# 255

Погледајте следећи чланак за информације о међусобној конверзији бинарних, окталних и хексадецималних бројева и низова.

Конвертује стрингове у експоненцијалној нотацији у нумеричке вредности

Низови у експоненцијалној нотацији могу се директно конвертовати у тип флоат помоћу флоат().

print(float('1.23e-4'))
print(type(float('1.23e-4')))
# 0.000123
# <class 'float'>

print(float('1.23e4'))
print(type(float('1.23e4')))
# 12300.0
# <class 'float'>

Мала слова е такође могу бити написана великим словима Е.

print(float('1.23E-4'))
# 0.000123

Претворите низове арапских бројева пуне ширине у бројеве

Арапски бројеви пуне ширине могу се директно конвертовати у бројеве помоћу инт() или флоат().

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Међутим, ако су симболи као што су минус и децималне тачке знакови пуне ширине, биће генерисана ВалуеЕррор.

# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'

Бројеви се могу конвертовати без проблема ако су знакови пуне ширине, али минус и децималне тачке су знакови половине ширине. конверзија је могућа заменом симбола пуне ширине симболима половине ширине помоћу методе реплаце().

print(float('-1.23'))
# -1.23

print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23

Претворите низ кинеских знакова у бројеве

Функција уницодедата.нумериц() у модулу уницодедата може се користити за претварање једног кинеског знака Уницоде у број типа броја са покретним зарезом.

Ако није једно слово, појавиће се грешка. Такође, ненумерички знакови ће узроковати грешку.

import unicodedata

print(unicodedata.numeric('五'))
print(type(unicodedata.numeric('五')))
# 5.0
# <class 'float'>

print(unicodedata.numeric('十'))
# 10.0

print(unicodedata.numeric('参'))
# 3.0

print(unicodedata.numeric('億'))
# 100000000.0

# print(unicodedata.numeric('五十'))
# TypeError: numeric() argument 1 must be a unicode character, not str

# print(unicodedata.numeric('漢'))
# ValueError: not a numeric character
Copied title and URL