PHP တွင် IS_DOUBEE () function ကိုပေးထားသော variable သည်နှစ်ဆတည်းသောရေပေါ်အမှတ်အသားနံပါတ် (i.e. , float type အမျိုးအစား) သည်ရှိမရှိရှာဖွေရန်အသုံးပြုသည်။ အလွန်ကြီးမားသောသို့မဟုတ်အလွန်သေးငယ်သောတန်ဖိုးများကိုဖော်ပြသည့်အခါ floating points သည်အလွန်အသုံးဝင်သည်, သို့သော်အထူးသဖြင့်ကြီးမားသောတန်ဖိုးများကိုကိုင်တွယ်ရာတွင်အချို့သောထောင်ချောက်များရှိသည်။ ဤဆောင်းပါးသည်ကြီးမားသော တန်ဖိုးများ ကိုစစ်ဆေးသည့်အခါ,
PHP ရှိ floating-point နံပါတ်များသည်များသောအားဖြင့် IEEE 754 စံနှုန်းကိုလိုက်နာလေ့ရှိသည်။ ဤစံနှုန်းအရ floating point နံပါတ်တစ်ခုသည်အပိုင်းသုံးပိုင်းပါ 0 င်သည်။ Floating-point နံပါတ်များကိုနည်းလမ်းများအကန့်အသတ်ဖြင့်သာဖော်ပြသောကြောင့်၎င်းတို့သည်အရေအတွက်အကန့်အသတ်ဖြင့်တိကျစွာမဖော်ပြနိုင်, အထူးသဖြင့်အလွန်ကြီးမားသောသို့မဟုတ်အလွန်သေးငယ်သောတန်ဖိုးများကိုအတိအကျမဖော်ပြနိုင်ပါ။ ၎င်းသည်အထူးသဖြင့်ကြီးမားသောတန်ဖိုးများကိုစစ်ဆေးသည့်အခါ၎င်းသည်မမျှော်လင့်သောအပြုအမူများကိုဖြစ်ပေါ်စေနိုင်သည်။
ဥပမာအားဖြင့် PHP တွင် Floating-point နံပါတ်များ၏တိကျမှုသည်အကန့်အသတ်ရှိသည်, များသောအားဖြင့် 15-16-bit Decimals နံပါတ်များဖြစ်သည်။ ဆိုလိုသည်မှာအချို့သောကိစ္စရပ်များတွင်ဤတိကျမှုအကွာအဝေး ထက် ကျော်လွန်သောတန်ဖိုးများကိုတိကျစွာမဖော်ပြနိုင်ပါ။
တန်ဖိုးသည်အလွန်ကြီးမားသည့်အခါ PHP သည်၎င်းကို floating point နံပါတ်သို့အလိုအလျောက်ပြောင်းလဲလိမ့်မည်, ၎င်းသည်တိကျမှန်ကန်မှုကိုဖြစ်ပေါ်စေနိုင်သည်။ ဥပမာအားဖြင့်, အောက်ပါကုဒ်သည်ကြီးမားသောတန်ဖိုးများကိုကိုင်တွယ်ရာတွင်ဘုံပြ problem နာကိုပြသသည်။
<span><span><span class="hljs-variable">$bigNumber</span></span><span> = </span><span><span class="hljs-number">12345678901234567890</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_double</span></span><span>(</span><span><span class="hljs-variable">$bigNumber</span></span><span>)); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း bool(true)</span></span><span>
</span></span>
ဤကုဒ်တွင် $ bigner သည် အလွန်ကြီးမားသည့်အလွန်ကြီးမားသောကိန်းဂဏန်းများဖြစ်သည်။ PHP မှတန်ဖိုးကို floating point နံပါတ်သို့ကူးပြောင်းသည့်အခါအချို့သောတိ ကျသော (တစ်စုံတစ်ရာသည် လုံးဝ ပျောက်ဆုံးသွားနိုင်သည်။
Floating-Point Numbers တွင်တိကျမှန်ကန်မှုအကန့်အသတ်ရှိသည်, အထူးသဖြင့်ကြီးမားသောတန်ဖိုးများကိုကိုင်တွယ်ရာတွင်ကိုယ်စားပြုမှုအမှားများဖြစ်ပေါ်နိုင်သည်။ ကျွန်ုပ်တို့တွင်အောက်ပါကုဒ်ရှိသည်ဆိုပါစို့။
<span><span><span class="hljs-variable">$number</span></span><span> = </span><span><span class="hljs-number">0.1</span></span><span> + </span><span><span class="hljs-number">0.2</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း float(0.30000000000000004)</span></span><span>
</span></span>
အထက်ပါကုဒ်သည် floating အမှတ်နံပါတ်များ၏ကိုယ်စားပြုမှုအမှားကိုပြသသည်။ ရလဒ်သည် 0.3 ဖြစ်ရန်မျှော်လင့်သော်လည်းအမှန်တကယ်ရလဒ်မှာ floating point နံပါတ်များကိုတိကျမှန်ကန်စွာကန့်သတ်ချက်ကြောင့် 0.300000000000000000000004 ဖြစ်သည်။ ကြီးမားသောတန်ဖိုးများကိုစစ်ဆေးသည့်အခါဤအမှားသည်အထူးသဖြင့်ထင်ရှားသည်။ ဤအမှားများသည် is_double () function ကိုအကျိုးသက်ရောက်နိုင်သည်။
PHP တွင် floating point နံပါတ်များကိုစစ်ဆေးရန်အထူးသဖြင့် PHP တွင် float အမျိုးအစားသည်ကိန်းဂဏန်းအမျိုးအစားများဖြစ်သည်။ ကြီးမားသောကိန်းဂဏန်းများတွင် အလွဲသုံးစားမှု ကိုရှောင်ရှားရန်ရှောင်ရှားနိုင်ရန်အတွက်အခြားအမျိုးအစားစစ်ဆေးမှုများလုပ်ဆောင်ချက်များကို is_int () နှင့် is_numeric () နှင့်ပေါင်းစပ်နိုင်သည်။ ဥပမာအားဖြင့်:
<span><span><span class="hljs-variable">$number</span></span><span> = </span><span><span class="hljs-number">12345678901234567890</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_numeric</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>)) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_int</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is an integer.\n"</span></span><span>;
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_double</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is a double.\n"</span></span><span>;
}
}
</span></span>
is_numeric () ကို ပေါင်းစပ်ခြင်းအားဖြင့်သင်သည် variable ကိုမှန်ကန်သောနံပါတ်တစ် ခု ဟုတ်မဟုတ်ကိုပထမဆုံးစစ်ဆေးနိုင်သည် ။
အလွန်ကြီးမားသည့်တန်ဖိုးများလိုအပ်သည့်ဖြစ်ရပ်များအတွက် PHP သည်မြင့်မားသောဂဏန်းတွက်ချက်မှုများအတွက် GMP extension များကိုထောက်ပံ့ပေးသည်။ GMP extension သည်သင့်အား floating point တိကျမှန်ကန်မှုကိုမစိုးရိမ်ဘဲတိကျမှန်ကန်မှုမရှိဘဲမတရားအရွယ်အစားမဆုံးရှုံးဘဲထပ်ဆင့်မလျူဘဲခွဲဝေမှုကိုကိုင်တွယ်ရန်ခွင့်ပြုသည်။
ဥပမာအားဖြင့်, ကြီးမားသောကိန်းကိုကိုင်တွယ်ရန် GMP extension များကိုသုံးပါ။
<span><span><span class="hljs-variable">$bigNumber</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gmp_init</span></span><span>(</span><span><span class="hljs-string">"123456789012345678901234567890"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$bigNumber</span></span><span>); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း一个 GMP ကန့်ကွက်</span></span><span>
</span></span>
GMP extension နှင့်အတူ PHP Built-in floating point နံပါတ်များကိုတိကျမှန်ကန်စွာရှောင်ရှားနိုင်ပြီးမြင့်မားသောကိန်းဂဏန်းတွက်ချက်မှုများကိုပြုလုပ်နိုင်သည်။ သတိပြုသင့်သည်မှာ IS_DOUBUBE () သည် GMP အမျိုးအစားကိန်းဂဏန်းများနှင့်သက်ဆိုင်ခြင်းမရှိသောကြောင့်ဤကိစ္စတွင် is_Resource () သို့မဟုတ် cmp function ကိုအသုံးပြုရန်လိုအပ်သည်။
is_Double () အချို့သောသတ်သတ်မှတ်မှတ်အခြေအနေများတွင်အထင်မြင်မှားစေသောနိုင်ပါတယ်။ Floating-point တိကျမှုကန့်သတ်ချက်များကြောင့် PHP သည်ကိန်းဂဏန်းများအလွန်ကြီးမားသည့်အခါ php သည် floating-point နံပါတ်မှတိကျစွာခွဲခြားနိုင်မည်မဟုတ်ပါ။ ဥပမာအားဖြင့်, is_Doubleble () ကို အောက်ပါကုဒ်များတွင်ရှာဖွေတွေ့ရှိမှုသည်တိကျသောရလဒ်ကိုဖြစ်ပေါ်စေလိမ့်မည်။
<span><span><span class="hljs-variable">$largeInt</span></span><span> = </span><span><span class="hljs-number">12345678901234567890</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">is_double</span></span><span>(</span><span><span class="hljs-variable">$largeInt</span></span><span>) ? </span><span><span class="hljs-string">"Double\n"</span></span><span> : </span><span><span class="hljs-string">"Not Double\n"</span></span><span>; </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း Not Double</span></span><span>
</span></span>
အချို့ဖြစ်ရပ်များတွင် ဒေါ်လာကြီးဌာန , ကိန်းဂဏန်းများသည် floating point တိကျမှု၏ကိုယ်စားပြုမှုအကွာအဝေးထက်ကျော်လွန်သောကြောင့်၎င်းသည် floating point tality ထက်ကျော်လွန်သောကြောင့်၎င်းကိုမှားယွင်းစွာပြုလုပ်နိုင်သည်။
PHP'S_DOUBEE () function ကိုအသုံးပြုသောအခါအထူးသဖြင့်ကြီးမားသောတန်ဖိုးများကိုကိုင်တွယ်သောအခါ, floating-point နံပါတ်များ၏တိကျမှန်ကန်မှုကိုကန့်သတ်ချက်များနှင့် ပတ်သက်. သတိထားရန်လိုအပ်သည်။ IS_DOUBEES () function သည် floating point numbers ၏တိကျမှန်ကန်မှုပြ problem နာကိုတိကျစွာ ခွဲခြား. မဖော်ပြနိုင်ပါ။ ဤပြ problem နာမျိုးကိုရှောင်ရှားရန်အခြားအမျိုးအစားစစ်ဆေးခြင်းလုပ်ဆောင်ချက်များကိုသူတို့နှင့် တွဲဖက်. သုံး. Super-concers ပြည့်ဝသောကိန်းဂဏန်းများကိုကိုင်တွယ်ရန် GMP extensions ကိုအသုံးပြုရန်စဉ်းစားနိုင်သည်။ ဤအလားအလာရှိသောအန္တရာယ်များကိုနားလည်ခြင်းအားဖြင့် developer များသည်ကြီးမားသောတန်ဖိုးထားသည့်ပရိုဂရမ်စိန်ခေါ်မှုများကိုပိုမိုကောင်းမွန်စွာကိုင်တွယ်နိုင်သည်။