Ngonversi nomer string str kanggo nomer int, ngambang ing Python

Bisnis

Yen sampeyan pengin Ngonversi senar saka angka kanggo angka numerik ing Python, nggunakake int () Ngonversi menyang ongko lan float () Ngonversi menyang nomer floating point.

Ing ngisor iki diterangake ing kene, bebarengan karo kode sampel.

  • Panggunaan dhasar
    • Ngonversi string numerik menyang integer:int()
    • Ngonversi senar nomer menyang nomer floating point:float()
  • Panggunaan khusus
    • Ngonversi string ing notasi biner, octal, lan heksadesimal dadi angka
    • Ngonversi string ing notasi eksponensial menyang angka
    • Ngonversi string angka Arab kanthi jembar lengkap dadi angka
    • Ngonversi senar saka karakter Cina kanggo nomer

Kanggo ngowahi nilai numerik menyang senar, gunakake str ().

Yen sampeyan pengin ngowahi nomer utawa strings kanggo macem-macem format, nggunakake format () fungsi utawa cara senar str.format (). Banjur sampeyan bisa ngowahi dadi 0-isi, binar, oktal, heksadesimal, notasi eksponensial, lsp. Deleng artikel ing ngisor iki kanggo rincian.

Uga bisa ngowahi dhaptar strings menyang dhaptar nomer. Deleng artikel ing ngisor iki kanggo rincian.

Ngonversi string numerik menyang integer:int()

Sampeyan bisa nggunakake int () Ngonversi senar saka nomer kanggo nomer jinis integer.

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

Desimal, kalebu titik desimal, lan string sing dipisahake karo koma bakal nyebabake ValueError.

# 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'

Senar sing diwatesi koma bisa diowahi kanthi ngilangi koma (ngganti karo senar kosong) nggunakake cara ngganti ().

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

Ngonversi senar nomer menyang nomer floating point:float()

A float () bisa digunakake kanggo ngowahi senar saka nomer kanggo jinis floating-titik.

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

String kanthi bagean integer sing diilangi diowahi kanthi nglengkapi bagean integer kanthi 0.

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

String integer uga diowahi dadi angka floating-point.

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

Ngonversi string ing notasi biner, octal, lan heksadesimal dadi angka

Yen radix ditemtokake minangka argumen kaloro kanggo int (), string bisa diowahi menyang integer int dening considering minangka binar, octal, heksadesimal, etc.

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

Kaya ing conto sadurunge, yen diilangi, angka kasebut dianggep minangka angka desimal.

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

Yen radix disetel kanggo 0, konversi adhedhasar ater-ater senar. Deleng ing ngisor iki kanggo prefiks senar.

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

Ater-ater lan abjad hex bisa dadi huruf gedhe utawa cilik.

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

Deleng artikel ing ngisor iki kanggo informasi babagan interkonversi angka lan string biner, octal, lan heksadesimal.

Ngonversi string ing notasi eksponensial menyang angka

Strings ing notasi eksponensial bisa diowahi langsung menyang jinis float karo float ().

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'>

Huruf cilik e uga bisa dikapitalisasi E.

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

Ngonversi string angka Arab kanthi jembar lengkap dadi angka

Angka Arab kanthi jembar bisa langsung diowahi dadi angka kanthi int () utawa ngambang ().

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

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

Nanging, yen simbol kayata titik minus lan desimal minangka karakter jembar lengkap, ValueError bakal digawe.

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

Nomer bisa diowahi tanpa masalah yen karakter jembaré lengkap, nanging titik minus lan desimal minangka karakter setengah jembar. konversi bisa kanthi ngganti simbol jembaré lengkap karo simbol setengah jembaré nggunakake ngganti () cara.

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

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

Ngonversi senar saka karakter Cina kanggo nomer

Fungsi unicodedata.numeric () ing modul unicodedata bisa digunakake kanggo ngowahi karakter Cina Unicode siji menyang nomer jinis nomer floating-point.

Yen ora siji huruf, bakal ana kesalahan. Uga, karakter non-numerik bakal nyebabake kesalahan.

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