အကယ်၍ သင်သည် 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()
- နံပါတ်တစ်လိုင်းကို Floating Point နံပါတ်များသို့ ပြောင်းပါ။:float()
- ဒွိ၊ အဋ္ဌမ၊ နှင့် ဆဋ္ဌမကိန်းဂဏန်းများကို ဂဏန်းများအဖြစ် ပြောင်းပေးသည်။
- 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