Sprintf function ကိုသုံးပြီး floating point နံပါတ်များကို flatating လုပ်သည့်အခါသင်တိကျသောပြ issues နာများကိုသင်ကြုံတွေ့ရနိုင်သည်။ floating-point နံပါတ်များကိုတိတိကျကျမဖော်ပြနိုင်သည့်အခါဤပြ problems နာများသည်များသောအား ဖြင့် ဖြစ်လေ့ရှိသည်။ ဤဆောင်းပါးသည်အဘယ်ကြောင့်ဤပြ problem နာဖြစ်ပေါ်ရကြောင်းနှင့်မည်သို့ဖြေရှင်းရမည်ကိုဤဆောင်းပါးသည်လေ့လာပါမည်။
PHP ရှိ Floating Point နံပါတ်များကို IEEE 754 စံကို အသုံးပြု. Binary floating point နံပါတ်ကိုယ်စားပြုမှုဖြစ်သည်။ ဤစံသည်များစွာသောကိန်းဂဏန်းတန်ဖိုးများကိုကိုယ်စားပြုနိုင်သော်လည်းအချို့သောဒ decimal မ decimal မကိန်းနံပါတ်များ (0.1 ကဲ့သို့သော) နံပါတ်များကို binary numbers များအဖြစ်တိကျစွာကိုယ်စားမပြုနိုင်ပါ။ ထို့ကြောင့်ဤရေပေါ်အမှတ်နံပါတ်များကိုတွက်ချက်ခြင်းသို့မဟုတ် format လုပ်သည့်အခါအမှားများဖြစ်ပေါ်လာနိုင်သည်။
ဥပမာအားဖြင့်, floating point နံပါတ် 0.1 ကို binary တွင်တိကျစွာထုတ်ဖော်ပြောဆိုနိုင်ပြီး၎င်း၏အနီးစပ်ဆုံးအချက်များမှာသိုလှောင်ထားသည့်အခါအနည်းငယ်အမှားအယွင်းများရှိလိမ့်မည်။ အထူးသဖြင့် Sprintf နှင့်အတူ format ချသောအခါဤအမှားသည်ပိုမိုထင်ရှားလာလိမ့်မည်။
<?php
$number = 0.1 + 0.2;
echo sprintf("%.1f", $number);
?>
ဤကုဒ်သည် 0.3 output ကိုရှိသင့်သည်။ သို့သော် 0.30000000000000000000000004 နှင့် တူသောအခြားရလဒ်များရနိုင်သည်။ ဤဖြစ်စဉ်သည်တွက်ချက်နေစဉ်အတွင်း floating point နံပါတ်များမှအနည်းငယ်အမှားအယွင်းများကြောင့်ဖြစ်ပေါ်လာသည်။
Sprintf ကို အသုံးပြုသောအခါတိကျမှန်ကန်မှုပြ problems နာများကိုရှောင်ရှားနိုင်ရန်အတွက်အောက်ပါနည်းလမ်းများကိုရယူနိုင်ပါသည်။
အလွယ်ကူဆုံးဖြေရှင်းနည်းမှာ Floating Point နံပါတ်များ၏တိကျမှန်ကန်မှုကိုထိန်းချုပ်ရန် ပတ် 0 န်းကျင် function ကိုအသုံးပြုရန်ဖြစ်သည်။ ပတ်ပတ်လည် function ကိုဒ decimal မအချက်အပြီးဂဏန်းအရေအတွက်ကိုသတ်မှတ်နိုင်သည်။
<?php
$number = 0.1 + 0.2;
echo sprintf("%.1f", round($number, 1));
?>
ဤဥပမာတွင် အဝိုင်း ($ နံပါတ် 1) သည် ဒ decimal မအချက်အပြီး floating point နံပါတ်ကိုတစ် ဦး သို့လှည့်ပတ်နေပြီး Sprintf output ကိုတိကျသောရလဒ်ကိုရရှိစေသည်။
Nume_Format function သည်နံပါတ်များကို format လုပ်ရန်အခြားနည်းလမ်းတစ်ခုဖြစ်သည်။ ၎င်းသည်ဒ decimal မနေရာအရေအတွက်ကိုသတ်မှတ်ရုံသာမကဘဲတစ်ထောင် delimiter ကဲ့သို့သောပြ problems နာများကိုလည်းကိုင်တွယ်သည်။ Nume_Format ကိုအသုံးပြုခြင်းသည် floating တိကျမှန်ကန်မှုပြ issues နာများကိုရှောင်ရှားနိုင်သည်။
<?php
$number = 0.1 + 0.2;
echo number_format($number, 1);
?>
ဤဥပမာသည် flatatted floating point နံပါတ်ကိုတိုက်ရိုက်ထုတ်လွှင့်ပြီး Sprintf ၏တိကျမှန်ကန်မှုကိုရှောင်ရှားလိမ့်မည်။
အချို့ဖြစ်ရပ်များတွင်သင့်တွင် floating point နံပါတ်၏တိကျမှန်ကန်မှုကိုထိန်းချုပ်ခြင်းဖြင့်အမှားအယွင်းများကိုရှောင်ရှားနိုင်သည်။ ဥပမာအား ဖြင့် ဖြည့်စွက်ခြင်းနှင့်အခြားစစ်ဆင်ရေး များ ပြုလုပ်ရာတွင်ဖြည့်စွက်ခြင်း,
<?php
$number = bcadd("0.1", "0.2", 1);
echo sprintf("%.1f", $number);
?>
BCADD ကို အသုံးပြုခြင်းသည်သင့်အားရလဒ်အတိအကျရရန်သေချာသည်။
PHP တွင် floating-point နံပါတ်များကို formating-point နံပါတ်များကို formating လုပ်ရန် PHPINTF ကိုသုံးပြီး PHPINTF ကို အသုံးပြု. PHPTF ကို အသုံးပြု. PHPTF ကို အသုံးပြု. PHP တွင်အသုံးပြုသောအခါပေါ်ပေါက်လာသည်။ ဤပြ problem နာကိုဖြေရှင်းရန်သင်သည် ပတ် 0 န်းကျင် function, နံပါတ် ( decadd ကဲ့သို့သောမြင့်မားသောဂဏန်းတွက်ချက်မှု function ကိုသုံးနိုင်သည်။ ဤနည်းလမ်းများသည်တိကျမှန်ကန်မှုအမှားများကြောင့်တိကျသောရလဒ်များကိုရှောင်ရှားရန်နှင့် output floatput နံပါတ်များကိုမျှော်လင့်ချက်များနှင့်အညီမှန်ကန်ကြောင်းသေချာစေရန်ကူညီနိုင်သည်။