လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> floating စစ်ဆင်ရေးအတွက် is_infinite ၏ဘုံထောင်ချောက်ကိုရှောင်ကြဉ်ပါ

floating စစ်ဆင်ရေးအတွက် is_infinite ၏ဘုံထောင်ချောက်ကိုရှောင်ကြဉ်ပါ

gitbox 2025-05-26

PHP တွင် floating point နံပါတ်များကို processing လုပ်သည့်အခါ is_infinite () သည် variable ကိုအဆုံးမဲ့ဟုတ်မဟုတ်ဆုံးဖြတ်ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ Floating-point နံပါတ်များ၏အရည်အသွေးများ၏ဂုဏ်သတ္တိများနှင့် PHP စနစ်အချည်းနှီးသောအမျိုးအစားများကြောင့် Semantics ကိုယ်တိုင်လည်း Semantics ဖြစ်သည်။ ဤဆောင်းပါးသည် is_infinite () ကို အသုံးပြု. floating-point တန်ဖိုးများကိုအကဲဖြတ်သောအခါဤပြ problems နာများကိုရှောင်ရှားရန်နှင့်လက်တွေ့ကျသောအကြံပြုချက်များကိုလေ့လာသည့်အခါဤဆောင်းပါးသည်သာမန်ညညဉ့်များကိုစူးစမ်းလေ့လာပါမည်။

floating အမှတ်နံပါတ်များ၏အဆုံးမဲ့တန်ဖိုးအရင်းအမြစ်

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

  • တရားမဝင်သုည - ခွဲခွဲစိတ်ခြင်း (ဥပမာ 1.0 / 0.0 )

  • Exponential exponential exponential expnialial explainion's ( ဥပမာ - 10000) )

  • အခြားဘာသာစကားများသို့မဟုတ်စနစ်များတွင်တင်သွင်းသောအချက်အလက်များသည်အဆုံးမဲ့တန်ဖိုးများ (JSON, API ပြန်လာ)

ဤအမှုများသည် PHP တွင်အဆုံးမဲ့ဟုသတ်မှတ်ထားသည့် inf or -inf တန်ဖိုးများကိုထုတ်လုပ်နိုင်ပြီး is_infinite () ဖြင့်ဖော်ထုတ်နိုင်သည်။

 $val = 1.0 / 0.0;
if (is_infinite($val)) {
    echo "တန်ဖိုးသည်အတိုင်းထက်အလွန်ကြီးမားသည်";
}

ထောင်ချောက် 1 - အလယ်အလတ်တန်ဖိုးကိုတွက်ချက်မှုတွင်အတိအလင်းရှာဖွေတွေ့ရှိခြင်းမရှိပါ

developer များစွာသည်နောက်ဆုံးရလဒ်တွင် IS_INFINITITIEN () ကို သာခေါ်ဆိုသော်လည်းအလယ်အလတ်အဆင့်များ၏တွက်ချက်မှုရလဒ်များကိုလျစ်လျူရှုပါကအဆုံးမဲ့ဖြစ်နိုင်သည်။ ဥပမာအားဖြင့်:

 $a = 1e308;
$b = 1e308;
$c = $a * $b;

if (!is_infinite($c)) {
    echo "ကွန်ပျူတာလုံခြုံရေး";
} else {
    echo "လျှံဖြစ်ပွားခဲ့သည်";
}

အထက်ဖော်ပြပါကုဒ်များတွင် $ a နှင့် $ ခများ ကိုယ်တိုင်သည်တရား 0 င်နေလျှင်ပင် $ a * $ B ရလဒ်သည် inf ကို ကူးစက်လိမ့်မည်။ ထို့ကြောင့်, နောက်ဆုံးရလဒ်ကိုကြည့်ခြင်းထက်စစ်ဆေးမှုများကိုဝေဖန်တွက်ချက်မှုအဆင့်များတွင်စစ်ဆေးမှုများကိုဖြည့်စွက်သင့်သည်။

ထောင်ချောက် 2: JSON သို့မဟုတ်ပြင်ပဒေတာ interface ကိုဆက်သွယ်ပါ

ပြင်ပ APIS သို့မဟုတ် JSONS သို့မဟုတ် JSONS မှ floating points များကို processing လုပ်သည့်အခါ inf or -inf ပါ 0 င်သည့်အချက်အလက်များကိုတွေ့နိုင်သည်။ PHP ၏ JSONS_COCDEDDode () နှင့် JSONS_Decode () () သည် ဤတန်ဖိုးများကိုမှန်ကန်စွာကိုင်တွယ်။ မရပါ။

 $data = ['value' => INF];
$json = json_encode($data);
// ပြန်လာ false,အကေြာင်းမှာ INF တရားမဝင်ပါ JSON အဘိုး

ဤသို့သောအခြေအနေမျိုးကိုကိုင်တွယ်ရန် filtering Logic ကိုစိတ်ကြိုက်ပြုလုပ်နိုင်သည်။

 function safe_json_encode($data) {
    array_walk_recursive($data, function (&$item) {
        if (is_infinite($item)) {
            $item = ($item > 0) ? 'INF' : '-INF';
        }
    });
    return json_encode($data);
}

ပြင်ပအရင်းအမြစ်ကိုမဖတ်မီစစ်ဆေးပါ။

 $json = file_get_contents('https://gitbox.net/api/data');
$data = json_decode($json, true);

if (is_infinite($data['value'])) {
    // အမှားကိုင်တွယ်ပါ
}

ထောင်ချောက် 3 - နှိုင်းယှဉ်ခြင်းနှင့် sorting အတွက်အဆုံးမဲ့တန်ဖိုးများကို Misjudgment

သင်၌ခင်းကျင်းမှုကိုအဆုံးမဲ့တန်ဖိုးများဖြင့်ရွေးချယ်ခြင်းသို့မဟုတ်နှိုင်းယှဉ်သောအခါယုတ္တိရှိသောအမှားတစ်ခုကိုသင်တွေ့ကြုံခံစားနိုင်သည်။ ဥပမာအားဖြင့်:

 $values = [1.5, INF, 3.0];
sort($values);

အောက်ပါဆုံးဖြတ်ချက်တွင်စီးပွားရေးယုတ္တိဗေဒတွင်ဖြစ်ပေါ်နေပါက Inf သည် မှန်ကန်စွာအဆင့်အတန်းမှန်ကန်စွာအဆင့်သတ်မှတ်လိမ့်မည်ဖြစ်သော်လည်း

 if ($values[2] > 1000000) {
    // ဒါတကယ်ကိုအကွာအဝေးထဲကဆိုလို?
}

ဤကိစ္စတွင်, ၎င်းသည်သတ်မှတ်ထားသောတံခါးခုံများနှင့်နှိုင်းယှဉ်မည့်အစား၎င်းသည်အဆုံးမဲ့ဟုတ်မဟုတ်ဆုံးဖြတ်သင့်သည်။

အကြံဥာဏ်ကိုရှောင်ပါ

  1. အဓိကစစ်ဆင်ရေးများတွင်ရှင်းလင်းပြတ်သားစွာစစ်ဆေးပါ။ အလွန်အမင်း တန်ဖိုးများကိုဖြစ်ပေါ်စေနိုင်သောတွက်ချက်မှုများအားလုံးကိုခေါ်ဆိုပါ။

  2. ပြင်ပဒေတာသန့်ရှင်းရေး - preprocess point input တန်ဖိုးများအားလုံး, infocess ကို ဖယ်ရှားပါသို့မဟုတ်၎င်းတို့ကိုစီးပွားရေးလက်ခံနိုင်သောအများဆုံးတန်ဖိုးနှင့်အစားထိုးပါ။

  3. EncapsulationSulation Check function: unified floating-point value valfification method ကိုတည်ဆောက်ပါ။

 function is_valid_float($val) {
    return is_float($val) && !is_nan($val) && !is_infinite($val);
}
  1. ရလဒ်များအပေါ်စီးပွားရေးကန့်သတ်ချက်များကိုသတ်မှတ်ပါ။ ဥပမာအားဖြင့်စျေးနှုန်းနှင့်ပမာဏကဲ့သို့သော floating point တန်ဖိုးများကိုကျိုးကြောင်းဆီလျော်သောအကွာအဝေးအထိကန့်သတ်ထားသည်။

 if ($amount > 1e12 || is_infinite($amount)) {
    throw new Exception("မမှန်ကန်သောပမာဏ");
}

အကျဉ်းချုပ်

PHP တွင် is_infinite () ကို အသုံးပြုခြင်းသည်ရိုးရှင်းသည်ဟုထင်ရသော်လည်း၎င်းနောက်ကွယ်တွင် floating point တိကျမှန်ကန်မှု, floating-point ယုတ္တိဗေဒဒီဇိုင်းရေးဆွဲရာတွင် developer များက 0 န်းကျင်ဆိုင်ရာစစ်ဆေးခြင်းနှင့်ဒေတာစစ်ဆေးမှုများကို အသုံးပြု. Runtime အတွင်း၌ကြိုတင်ခန့်မှန်းရခက်သည့်အပြုအမူသို့မဟုတ်လုံခြုံရေးအန္တရာယ်များကိုထိရောက်စွာအသုံးချသည့်နယ်နိမိတ်စစ်ဆေးခြင်းနှင့်ဒေတာစစ်ဆေးခြင်းကိုအသုံးပြုသည်။ Floating Poinflfor ကိုမှန်ကန်စွာဖော်ထုတ်ခြင်းနှင့်ပြုပြင်ခြင်းအားဖြင့်စနစ်၏ကြံ့ခိုင်မှုနှင့်တည်ငြိမ်မှုကိုများစွာတိုးတက်စေနိုင်သည်။