နံပါတ်စာကြောင်း str ကို နံပါတ် int သို့ ပြောင်းပါ၊ Python တွင် မျှောပါ။

စီးပွားရေးလုပ်ငန်း

အကယ်၍ သင်သည် Python ရှိ ကိန်းဂဏာန်းတန်ဖိုးများသို့ ဂဏန်းစာကြောင်းတစ်ကြောင်းကို ပြောင်းလိုပါက၊ ကိန်းပြည့်များအဖြစ်သို့ ပြောင်းလဲရန်နှင့် float() ကို Float Point နံပါတ်များသို့ ပြောင်းရန် int() ကို အသုံးပြုပါ။

နမူနာကုဒ်နှင့်အတူ အောက်ပါတို့ကို ဤနေရာတွင် ရှင်းပြထားသည်။

  • အခြေခံအသုံးပြုမှု
    • ဂဏန်းစာကြောင်းများကို ကိန်းပြည့်အဖြစ်သို့ ပြောင်းပါ။:int()
    • နံပါတ်တစ်လိုင်းကို Floating Point နံပါတ်များသို့ ပြောင်းပါ။:float()
  • အထူးအသုံးပြုမှု
    • ဒွိ၊ အဋ္ဌမ၊ နှင့် ဆဋ္ဌမကိန်းဂဏန်းများကို ဂဏန်းများအဖြစ် ပြောင်းပေးသည်။
    • exponential notation တွင် စာကြောင်းများကို ဂဏန်းတန်ဖိုးများအဖြစ် ပြောင်းသည်။
    • အကျယ်အဝန်းအပြည့်ရှိသော အာရဗီနံပါတ်များကို ဂဏန်းများအဖြစ်သို့ ပြောင်းပါ။
    • တရုတ်အက္ခရာလိုင်းတစ်လိုင်းကို ဂဏန်းအဖြစ်ပြောင်းပါ။

ဂဏန်းတန်ဖိုးကို စာကြောင်းတစ်ခုသို့ ပြောင်းရန် str() ကိုသုံးပါ။

နံပါတ်များ သို့မဟုတ် စာကြောင်းများကို ဖော်မတ်အမျိုးမျိုးသို့ ပြောင်းလိုပါက format() လုပ်ဆောင်ချက် သို့မဟုတ် string method str.format() ကို အသုံးပြုပါ။ ထို့နောက် သင်သည် 0-fill၊ binary၊ octal၊ hexadecimal၊ exponential notation စသည်ဖြင့် ပြောင်းနိုင်သည်။ အသေးစိတ်အတွက် အောက်ပါဆောင်းပါးကို ကြည့်ပါ။

၎င်းသည် စာကြောင်းများစာရင်းကို နံပါတ်များစာရင်းအဖြစ်သို့လည်း ပြောင်းနိုင်သည်။ အသေးစိတ်အတွက် အောက်ပါဆောင်းပါးကို ကြည့်ပါ။

ဂဏန်းစာကြောင်းများကို ကိန်းပြည့်အဖြစ်သို့ ပြောင်းပါ။:int()

နံပါတ်တစ်လိုင်းကို ကိန်းပြည့်အမျိုးအစားနံပါတ်များသို့ ပြောင်းရန် int() ကို အသုံးပြုနိုင်သည်။

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

ဒဿမအမှတ်များအပါအဝင် ဒဿမများနှင့် ကော်မာများဖြင့် ပိုင်းခြားထားသော စာကြောင်းများသည် 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'

အစားထိုး() နည်းလမ်းကို အသုံးပြု၍ ကော်မာ-ကန့်ကွက်ထားသော စာကြောင်းများကို ကော်မာကို ဖယ်ရှားခြင်းဖြင့် (၎င်းကို အချည်းနှီးသော စာကြောင်းဖြင့် အစားထိုး) ဖြင့် ပြောင်းလဲနိုင်သည်။

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

နံပါတ်တစ်လိုင်းကို Floating Point နံပါတ်များသို့ ပြောင်းပါ။:float()

float() သည် ဂဏန်းများ လိုင်းတစ်ခုအား Float-point နံပါတ်အမျိုးအစားသို့ ပြောင်းလဲရန် အသုံးပြုနိုင်သည်။

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

ချန်လှပ်ထားသော ကိန်းပြည့်အပိုင်းပါသည့် စာကြောင်းများကို ကိန်းပြည့် 0 ဖြင့် ဖြည့်စွက်ခြင်းဖြင့် အသွင်ပြောင်းသည်။

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

ကိန်းပြည့်စာကြောင်းများကို Floating-Point နံပါတ်များသို့လည်း ပြောင်းပါသည်။

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

ဒွိ၊ အဋ္ဌမ၊ နှင့် ဆဋ္ဌမကိန်းဂဏန်းများကို ဂဏန်းများအဖြစ် ပြောင်းပေးသည်။

အစွန်းတစ်ဖက်ကို int(သို့) ဒုတိယအငြင်းအခုံအဖြစ် သတ်မှတ်ပါက၊ string ကို binary၊ octal၊ hexadecimal စသည်ဖြင့် ထည့်သွင်းစဉ်းစားခြင်းဖြင့် ကိန်းပြည့် int အဖြစ်သို့ ပြောင်းလဲနိုင်သည်။

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 ဟုသတ်မှတ်ပါက၊ ပြောင်းလဲခြင်းမှာ string ရှေ့ဆက်ပေါ်တွင် အခြေခံသည်။ စာကြောင်းရှေ့ဆက်များအတွက် အောက်တွင်ကြည့်ပါ။

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

ရှေ့စာလုံးများနှင့် hex အက္ခရာများသည် အကြီး သို့မဟုတ် စာလုံးသေး ဖြစ်နိုင်သည်။

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

binary၊ octal၊ နှင့် hexadecimal နံပါတ်များနှင့် string များ အပြန်အလှန်ပြောင်းခြင်းဆိုင်ရာ အချက်အလက်အတွက် အောက်ပါဆောင်းပါးကို ကြည့်ပါ။

exponential notation တွင် စာကြောင်းများကို ဂဏန်းတန်ဖိုးများအဖြစ် ပြောင်းသည်။

exponential notation ရှိ စာကြောင်းများကို float() ဖြင့် 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'>

စာလုံးသေး e ကိုလည်း စာလုံးကြီး E ဖြင့်လည်း ခေါ်နိုင်သည်။

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

အကျယ်အဝန်းအပြည့်ရှိသော အာရဗီနံပါတ်များကို ဂဏန်းများအဖြစ်သို့ ပြောင်းပါ။

အနံအပြည့်ရှိသော အာရဗီဂဏန်းများကို int() သို့မဟုတ် float() ဖြင့် နံပါတ်များသို့ တိုက်ရိုက်ပြောင်းနိုင်သည်။

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

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

သို့ရာတွင်၊ အနုတ်နှင့် ဒဿမအပိုင်းများကဲ့သို့သော သင်္ကေတများသည် အကျယ်အဝန်းအပြည့်ရှိသော အက္ခရာများဖြစ်ပါက၊ ValueError တစ်ခု ထုတ်ပေးမည်ဖြစ်ပါသည်။

# 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

တရုတ်အက္ခရာလိုင်းတစ်လိုင်းကို ဂဏန်းအဖြစ်ပြောင်းပါ။

Unicodedata module ရှိ unicodedata.numeric() လုပ်ဆောင်ချက်ကို ယူနီကုဒ် တရုတ်စာလုံးတစ်လုံးတည်းကို ပေါ်ပေါ်အမှတ်နံပါတ် အမျိုးအစားနံပါတ်အဖြစ်သို့ ပြောင်းလဲရန် အသုံးပြုနိုင်သည်။

စာလုံးတစ်လုံးတည်းမဟုတ်ရင် error ပေါ်လာလိမ့်မယ်။ ထို့အပြင်၊ ဂဏန်းမဟုတ်သော အက္ခရာများသည် အမှားအယွင်း ဖြစ်စေသည်။

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