Floating Point တိကျမှုပြ problems နာများသည်ပရိုဂရမ်းမင်းတွင်အထူးသဖြင့်သင်္ချာတွက်ချက်မှုများနှင့်ပတ်သက်လာလျှင်ဖြစ်သည်။ Floating Point နံပါတ်များကိုကွန်ပျူတာများတွင်ကိုယ်စားပြုသည်။ PHP တွင်အထူးသဖြင့်စာရင်းအင်းများနှင့်တွက်ချက်မှုများနှင့်ပတ်သက်သောအခါ, ထို့ကြောင့် floating point တိကျမှုပြ problems နာများကြောင့်ဖြစ်ရတဲ့စာရင်းအင်းအမှားများကိုကျွန်ုပ်တို့မည်သို့ရှောင်ရှားနိုင်မည်နည်း။ ဤဆောင်းပါးသည်ဤပြ problems နာများကိုမည်သို့ဖြေရှင်းရမည်ကိုမည်သို့ဖြေရှင်းရမည်ကိုဆွေးနွေးပါမည် ။
Floating Point တိကျမှုပြ problems နာများကိုများသောအားဖြင့်ကွန်ပျူတာအတွင်းရှိ floating point နံပါတ်များကိုကိုယ်စားပြုမှုဖြင့်ကန့်သတ်ချက်များကြောင့်ဖြစ်သည်။ ကွန်ပြူတာများသည် Finite Memory တွင် floating-point နံပါတ်များကိုသာကိုယ်စားပြုနိုင်ပြီး floating-point numbers ၏တိကျမှုသည်အကန့်အသတ်ဖြင့်သာဖြစ်သည်။ ဥပမာအားဖြင့် 0.1 + 0.2 ကို ဖော်ပြခြင်းသည်ခန့်မှန်းခြေအားဖြင့် 0.3 ထက်ခန့်မှန်းခြေအားဖြင့်ခန့်မှန်းခြေအားဖြင့်ဖြစ်သည်။
ထိုကဲ့သို့သောပြ problems နာများသည်စာရင်းအင်းလုပ်ငန်းစဉ်တွင်အထူးအရေးကြီးသည်။
Floating Point တိကျမှုပြ problems နာများကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုရှောင်ရှားနိုင်ရန်အတွက်အောက်ပါနည်းလမ်းများကိုကျင့်သုံးနိုင်သည်။
floating-point နံပါတ်များအစားကိန်းကိုသုံးပါ ။ ဖြစ်နိုင်လျှင် floating-point နံပါတ်ကိုတွက်ချက်ရန်အတွက်ကိန်းဂဏန်းများသို့ပြောင်းပါ။ ဥပမာအားဖြင့်, အကယ်. သင်ငွေပမာဏကိုကိုင်တွယ်ရန်လိုအပ်ပါက၎င်းသည် floating point နံပါတ်များ၏တိကျမှန်ကန်မှုကိုရှောင်ရှားနိုင်သည့် "အသင်းဝင်" အစား "အသင်းဝင်" အစား "မိနစ်" သို့ပြောင်းလဲနိုင်သည်။
$amount = 0.1 * 100; // တစ်ခုကိန်းဖြစ်လာသည်
$amount = round($amount); // floating အမှားများကိုရှောင်ကြဉ်ပါ
BCMath function ကိုအသုံးပြုခြင်း - PHP သည် bcmath extension ကိုအထူးသဖြင့်တိကျသောသင်္ချာတွက်ချက်မှုများအတွက်အထူးအသုံးပြုသော BCMath တိုးချဲ့မှုကိုပေးသည်။ ၎င်းသည် ploating-point နံပါတ်များ၏တိကျမှန်ကန်မှုကိုရှောင်ရှားနိုင်သည်။ ဤတိုးချဲ့မှုမှတစ်ဆင့်ဒ decimal မအချက်အပြီးဂဏန်းအရေအတွက်ကိုတိကျစွာထိန်းချုပ်နိုင်ပြီးရေပေါ်အမှားများကိုရှောင်ရှားနိုင်သည်။
$result = bcadd('0.1', '0.2', 2); // အသုံးပြုbcmathfunction ကိုတွက်ချက်မှု
echo $result; // ထုတ်လုပ်ခြင်း 0.3
Set Pultion : PHP မှ Ini_set () function သည် floating point နံပါတ်များကိုသတ်မှတ်ရန်ခွင့်ပြုသည်။ ပိုမိုမြင့်မားသောတိကျမှန်ကန်မှုကိုသတ်မှတ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် application တစ်ခုတွင် floating point အမှားအယွင်းများ၏သက်ရောက်မှုကိုလျှော့ချနိုင်သည်။
ini_set('precision', 14);
array_count_values သည် PHP တွင်အလွန်အသုံးဝင်သော function တစ်ခုဖြစ်သည်။ ၎င်းသည်တန်ဖိုးများအားလုံး၏အဖြစ်အပျက်များကိုခင်းကျင်းစွာထည့်သွင်းပြီး Associative Array ကိုပြန်ပေးနိုင်သည်။ Array ၏သော့သည်တန်ဖိုးကိုတန်ဖိုးနှင့်ခင်းကျင်းမှု၏တန်ဖိုးသည်တန်ဖိုး၏သက်ကြီးရွယ်အိုများဖြစ်သည်။
သို့သော် floating point တိကျမှုပြ issues နာများသည်အထူးသဖြင့် Array တစ်ခုတွင် floating point တန်ဖိုးများအပါအ 0 င် floating point တန်ဖိုးများအပါအ 0 င် floating points အပါအ 0 င်သည့်အခါ array_count_values function ၏စာရင်းအင်း၏စာရင်းအင်းရလဒ်များကိုအကျိုးသက်ရောက်နိုင်သည်။ တိကျသောစာရင်းအင်းရလဒ်များကိုသေချာစေရန်, အောက်ပါအစီအမံများကိုအကြံပြုပါသည်။
floating point တန်ဖိုးများကို rounding : floating point တန်ဖိုးများအတွက်, array_count_values မခေါ်မီသင်ပတ်ပတ်လည်နိုင်ပါတယ်။ စာရင်းအင်းဆိုင်ရာအခြေခံဥပဒေများ၏ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်ဒ decimal မသောနေရာများသို့ floating point တန်ဖိုးကိုပတ် 0 န်းကျင်ကိုလှည့်ပတ်ရန် () function ကိုသုံးပါ။
$numbers = [0.1, 0.2, 0.1, 0.2, 0.3];
$roundedNumbers = array_map(function($value) {
return round($value, 2);
}, $numbers);
$counts = array_count_values($roundedNumbers);
print_r($counts);
ဤနည်းအားဖြင့် floating point နံပါတ်များကိုတွက်ချက်ရာတွင်အမှားအယွင်းများအနည်းငယ်သာရှိပါကနောက်ဆုံးစာရင်းအင်းရလဒ်များသည်တိကျမှန်ကန်မှုရှိလိမ့်မည်။
floating point တန်ဖိုးများ၏စည်းလုံးညီညွတ်မှုပုံစံများ - ခင်းကျင်းထဲရှိရေပေါ်အမှတ်အသားတန်ဖိုးများတွင်ဒ decimal မနေရာများပါ 0 င်ပါက,
$numbers = [0.1, 0.1000000001, 0.2000000001];
$formattedNumbers = array_map(function($value) {
return number_format($value, 2, '.', '');
}, $numbers);
$counts = array_count_values($formattedNumbers);
print_r($counts);
ကြီးမားသောစကေးအမှားများကိုကိုင်တွယ်ပါ ။ အချက်အလက်များတွင် floating အမှားအယွင်းများစွာရှိလျှင် Floating အမှားများကိုစာရင်းအင်းရလဒ်များအပေါ်သက်ရောက်မှုကိုလျှော့ချရန် Floating Range ကိုကန့်သတ်ရန်စဉ်းစားနိုင်သည်။
$numbers = [0.1000001, 0.1000002, 0.2000001, 0.2000002];
$adjustedNumbers = array_map(function($value) {
return round($value, 6); // သာခြောက်လ decimal မထားတဲ့နေရာတွေကိုထိန်းသိမ်းထားတယ်
}, $numbers);
$counts = array_count_values($adjustedNumbers);
print_r($counts);
PHP တွင် Floating Point တိကျမှုပြ problems နာများသည်စာရင်းအင်းအမှားများအတွက်အရေးကြီးသောအကြောင်းပြချက်ဖြစ်သည်။ စာရင်းအင်းများအတွက် array_count_valuates ကို သုံးသောအခါ floating-point နံပါတ်များရှိအမှားများသည်နောက်ဆုံးရလဒ်ကိုအကျိုးသက်ရောက်နိုင်သည်။ ထို့ကြောင့်ကျွန်ုပ်တို့သည်ဤပြ problem နာကိုအောက်ပါနည်းလမ်းများဖြင့်ရှောင်ရှားနိုင်သည်။
producting များအတွက် floating အမှတ်နံပါတ်များကိုကိန်းဂဏန်းများအတွက်ပြောင်းလဲ။
မြင့်မားသော - တိကျ bcmath တိုးချဲ့မှုကိုသုံးပါ။
ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန် floating point နံပါတ်များကိုလှည့်ပတ်။
ဤအစီအမံများကိုရယူခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်စာရင်းအင်းရလဒ်များ၏တိကျမှန်ကန်မှုကိုသေချာစေရန်နှင့် floating အမှားများကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုရှောင်ရှားနိုင်သည်။