PHP Development တွင် Ceil () function သည် floating point နံပါတ်များကိုလှည့်ပတ်ရန်အသုံးပြုသည်။ Ceil () ကို သုံး. developer များစွာသည်မမျှော်လင့်သောတိကျမှန်ကန်မှုပြ problems နာများနှင့်ကြုံတွေ့ရသည်။ ဤဆောင်းပါးသည် စီအို () သည်ပုံမှန်မဟုတ်သောအချက်အလက်တိကျမှန်ကန်မှုကိုဖြစ်ပေါ်စေပြီးဤပြ problem နာကိုထိရောက်စွာရှောင်ရန်နည်းလမ်းများစွာကိုမိတ်ဆက်ပေးသည့်အကြောင်းရင်းများကိုဤဆောင်းပါးကအသေးစိတ်လေ့လာသုံးသပ်လိမ့်မည်။
CEIL () သည် PHP တွင်ပါ 0 င်သောသင်္ချာဆိုင်ရာ function တစ်ခုဖြစ်သည်။ ဥပမာအားဖြင့်:
<?php
echo ceil(4.1); // ထုတ်လုပ်ခြင်း 5
echo ceil(9.999); // ထုတ်လုပ်ခြင်း 10
?>
Ceil () ၏ function သည်ရိုးရှင်းပြီးရှင်းရှင်းလင်းလင်းဖြစ်သော်လည်း၎င်း၏ input သည် floating point နံပါတ်ဖြစ်ပြီး floating point နံပါတ်ကိုယ်တိုင်သည်ကိုယ်စားပြုမှုတိကျမှန်ကန်မှုရှိပါသည်။
Floating-point နံပါတ်များကိုကွန်ပျူတာများရှိ Binary တွင်သိမ်းဆည်းထားပြီးဒ decimal မ decimals များကိုအကန့်အသတ်ဖြင့်မဖော်ပြနိုင်ပါ။ ဥပမာအားဖြင့် 0.1 သည် floating point ကိုယ်စားပြုမှုတွင် binary decimals ၏အဆုံးမဲ့ကွင်းဆက်တစ်ခုဖြစ်ပြီးအမှန်တကယ်သိုလှောင်ထားသောတန်ဖိုးကိုအနည်းငယ်သွေဖည်သည်။
ceil () function ကိုခေါ်သည့်အခါ, floating point အရေအတွက်၏အမှန်တကယ်သိုလှောင်ထားသည့်တန်ဖိုးသည်မျှော်မှန်းထားသည်ထက်အနည်းငယ်သေးငယ်သည်သို့မဟုတ်အနည်းငယ်ပိုကြီးလာပါက CEIL သည် မျှော်မှန်းထားသည်ထက်အနည်းငယ်သေးငယ်သည်။
ဥပမာအားဖြင့်:
<?php
$num = 1.9999999999999999;
echo ceil($num); // ဖြစ်လိမ့်မည်ဟုမျှော်လင့်ရသည် 2,တကယ်တော့ဒါဟာ 2
$num = 1.0000000000000001;
echo ceil($num); // ဖြစ်လိမ့်မည်ဟုမျှော်လင့်ရသည် 2,ဒါပေမယ့်တကယ်တော့ဒါဟာဖြစ်ပါတယ် 1,floating point သိုလှောင်မှုခန့်မှန်းခြေထက်နည်းသောကြောင့် 1.0000000000000001
?>
ဤအချိန်တွင်ဒ decimal မအချက်အပြီးခြားနားချက်ရှိပုံရသည်, သို့သော်၎င်းသည်အမှန်တကယ် floating point သိုလှောင်မှုတွင်အမှားကြောင့်ဖြစ်သည်။ CEIL () သည် အမှန်တကယ်အကြမ်းဖျင်းနှင့်အညီအထက်သို့တက်လာပြီးမမျှော်လင့်သောရလဒ်များဖြစ်ပေါ်နိုင်သည်။
<?php
$price = 19.999999999999998;
echo ceil($price); // ထုတ်လုပ်ခြင်း结果是 20,မျှော်လင့်ချက်များနှင့်တွေ့ဆုံရန်
$price2 = 19.999999999999996;
echo ceil($price2); // ထုတ်လုပ်ခြင်း结果是 20,မျှော်လင့်ချက်များနှင့်တွေ့ဆုံရန်
$price3 = 19.999999999999994;
echo ceil($price3); // 也可能ထုတ်လုပ်ခြင်း 20,floating အမှတ်နံပါတ်များ၏အနည်းငယ်အမှားရလဒ်သည်မတည်မငြိမ်ဖြစ်စေသည်
?>
ကွန်ပျူတာသို့မဟုတ်ဘဏ် systems ာရေးစနစ်များအမြောက်အများဖြင့်ထိုကဲ့သို့သောအမှားများသည်စီးပွားရေးယုတ္တိဗေဒအမှားများကိုဖြစ်ပေါ်စေသည်။
Floating Point အမှားများကိုရှောင်ရှားရန် PHP သည်အထူးတိကျသောသင်္ချာတွက်ချက်မှုများအတွက် BCMath တိုးချဲ့မှုများကိုပေးသည်။
<?php
$num = "19.999999999999998";
$result = bcadd($num, '0', 0); // ချန်လှပ်ထား0ဒ decimal မကိန်း,၎င်းသည်အောက်သို့ 0 င်ရောက်ခြင်းနှင့်ညီသည်
if (bccomp($num, $result, 14) > 0) {
$result = bcadd($result, '1', 0); // လှျင်$numရလဒ်ထက်သာ။ ကြီးမြတ်,ထို့နောက်အထက်သို့ထည့်ပါ1,အာရုံဖော်ခြင်းceilအကျိုး
}
echo $result; // ထုတ်လုပ်ခြင်း 20
?>
Floating Point နံပါတ်များပေါ်တွင်အချို့သောဒ decimal မနေရာတစ်ခုကိုဝိုင်းထားခြင်းက floating point error ၏အကျိုးသက်ရောက်မှုကိုလျော့နည်းစေသည်။
<?php
$num = 19.999999999999998;
$num = round($num, 10); // ချန်လှပ်ထား10ဒ decimal မကိန်း
echo ceil($num);
?>
floating-points နံပါတ်များကိုတိုက်ရိုက်တွက်ချက်မှုအတွက်အမှားအယွင်းများကိုရှောင်ရှားရန်နံပါတ်များကိုကြိုးကြိုးများနှင့်စိတ်ကြိုက်ပြင်ဆင်ခြင်း။
ဘဏ် financial ာရေးနှင့် Metrologysology Systems သည်အသေးငယ်ဆုံးယူနစ်များ (ဥပမာ segments များကဲ့သို့) ပမာဏကိုရှောင်ရှားခြင်း, အပြောင်းအလဲနဲ့ပြီးနောက်, လိုအပ်သောယူနစ်သို့ပြန်သွားပါ။
CEIL () function သည်အမှားအယွင်းများသည်အမှားအယွင်းများမဖြစ်စေနိုင်သော်လည်း floating point နံပါတ်များကိုတိကျမှန်ကန်မှုမရှိခြင်းကြောင့်ရလဒ်သည်မျှော်လင့်ချက်များနှင့်မကိုက်ညီပါ။
ကွန်ပျူတာများရှိရေပေါ်အမှတ်နံပါတ်များကိုခန့်မှန်းခြင်းပြ problem နာသည်အဓိကအကြောင်းအရင်းဖြစ်သည်။
BCMAtath extension သို့မဟုတ် rounding ကိုပထမ ဦး ဆုံးအသုံးပြုခြင်းအားဖြင့်တိကျမှန်ကန်မှုခြွင်းချက်များကိုလျှော့ချနိုင်သည်။
ပြင်းထန်သောအခါသမယများတွင် floating point နံပါတ်များကိုအသုံးပြုခြင်းကိုရှောင်ရှားရန်နှင့်မြင့်မားသောတိကျသောစစ်ဆင်ရေးများအတွက်ကိန်းသို့မဟုတ်ကြိုးများကိုအသုံးပြုသည်။