PHP တွင်သမားရိုးကျအနုတ်စစ်ဆင်ရေးများကို နုတ် ခြင်းသင်္ကေတများဖြင့်အကောင်အထည်ဖော်သည်။ ဤစစ်ဆင်ရေးသည်အခြေအနေအများစုတွင်လိုအပ်ချက်များကိုဖြည့်ဆည်းပေးနိုင်သော်လည်း Floating-point အရေအတွက်စစ်ဆင်ရေးများတိကျမှန်ကန်မှုကြောင့်မတိကျသောရလဒ်များရရှိနိုင်ပါသည်။
Float သည်ကွန်ပျူတာများကိုကွန်ပျူတာများကိုကိုယ်စားပြုရန်အသုံးပြုသောနည်းလမ်းဖြစ်သည်။ ကွန်ပြူတာများသည်ဒ dec မကိန်းကိန်းအားလုံးကိုတိကျစွာကိုယ်စားမပြုနိုင်သောကြောင့်ရေပေါ်မှတ်နံပါတ်များသည်များသောအားဖြင့် rounding အမှားများရှိသည်။ ၎င်းသည်ဘဏ် field ာရေးနယ်ပယ်တွင်အထူးသဖြင့်ငွေကြေးနှင့်ကြီးမားသောအရောင်းအ 0 ယ်များပါ 0 င်သည့်အတွက်ပိုမိုများပြားသောအန္တရာယ်များနှင့်ဆုံးရှုံးမှုများကိုပိုမိုများပြားစေနိုင်သည်။ ဥပမာအားဖြင့်, ရိုးရှင်းသောနုတ်ခြင်းစစ်ဆင်ရေး 100.05 - 50.02 သည် မျှော်လင့်ထားသည့်တန်ဖိုးအတိအကျကိုမပြန်နိုင်သော်လည်းရလဒ်ကိုဒ decimal မအမှားတစ်ခုဖြင့်ပြန်ပေးလိမ့်မည်မဟုတ်ပါ။
သာမန်နုတ်ခြင်းသင်္ကေတများနှင့်မတူဘဲ PHP မှပေးသော BCSUB function ကိုအထူးတိကျစွာသင်္ချာတွက်ချက်မှုများကိုကိုင်တွယ်ရန်အထူးအသုံးပြုသည်။ ၎င်းသည်အနုညာတည့်ဆိုင်ရာတိကျတန်ဖိုးများကိုထောက်ပံ့သည်။
BCSUB function ကိုအသုံးပြုသည် -
<span><span><span class="hljs-title function_ invoke__">bcsub</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$left_operand</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$right_operand</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$scale</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>$ left_operand : နုတ်သည် (string type နံပါတ်) ကိုနုတ်သည်။
$ right_operand : အနုတ် (string type အရေအတွက်) ။
$ စကေး : ရလဒ်၏ဒ decimal မသောနေရာအရေအတွက်ကိုသတ်မှတ်ရန် optional parameter သည်။
ဤလုပ်ဆောင်ချက်သည် string type တန်ဖိုးနှစ်ခုကိုထည့်သွင်းခြင်းနှင့် string type အမျိုးအစားမြင့်မားသောရလဒ်များကိုပြန်ပို့သည်။ Flowating Point နံပါတ်များကိုမသုံးသောကြောင့် BCSubsub သည် floating point အမှားများကြောင့်တိကျမှန်ကန်မှုပြ problems နာများကိုရှောင်ရှားနိုင်သည်။
ဘဏ် systems ာရေးစနစ်များတွင်ပါ 0 င်ပတ်သက်သည့်ငွေ၏တွက်ချက်မှုသည်အထူးအရေးကြီးသည်။ သေးငယ်တဲ့အမှားများတောင်မှရှည်လျားသောကာလသို့မဟုတ်ကြီးမားသောအရောင်းအကျော်ကြီးမားသောသွေဖီသို့စုဆောင်းနိုင်ပါတယ်။ ဥပမာအားဖြင့်, အကောင့်မျိုးစုံဖြတ်တောက်ခြင်းဖြတ်တောက်ခြင်း, ငွေလဲလှယ်နှုန်းပြောင်းလဲခြင်း, အတိုးနှုန်းများစသဖြင့်သွေဖည်ခြင်းစသည်။
BCSUB function ကိုအသုံးပြုခြင်းသည်နုတ်ခြင်းသည်မျှော်လင့်ထားသည့်တိကျမှန်ကန်မှုကိုရရှိနိုင်ရန်နှင့် floating-point operations အမှားများကိုရှောင်ရှားနိုင်ရန်သေချာစေနိုင်သည်။ ဥပမာအားဖြင့်, ပမာဏနှစ်ခုအကြားခြားနားချက်ကိုတွက်ချက်သောအခါပုံမှန်နုတ်ခြင်းသင်္ကေတကိုအသုံးပြုခြင်းသည်အောက်ပါတိကျသောရလဒ်များကိုဖြစ်ပေါ်စေနိုင်သည်။
<span><span><span class="hljs-variable">$amount1</span></span><span> = </span><span><span class="hljs-number">100.05</span></span><span>;
</span><span><span class="hljs-variable">$amount2</span></span><span> = </span><span><span class="hljs-number">50.02</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$amount1</span></span><span> - </span><span><span class="hljs-variable">$amount2</span></span><span>; </span><span><span class="hljs-comment">// ဒီတစ်ခါလည်းတိရလဒ်</span></span><span>
</span></span>BCSUB function ကို အသုံးပြု. တွက်ချက်မှုရလဒ်သည်တိကျမှန်ကန်ပြီးဒ decimal မသောနေရာအရေအတွက်ကိုထိန်းချုပ်နိုင်သည်။
<span><span><span class="hljs-variable">$amount1</span></span><span> = </span><span><span class="hljs-string">'100.05'</span></span><span>;
</span><span><span class="hljs-variable">$amount2</span></span><span> = </span><span><span class="hljs-string">'50.02'</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bcsub</span></span><span>(</span><span><span class="hljs-variable">$amount1</span></span><span>, </span><span><span class="hljs-variable">$amount2</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// နှစ်ခုဒ decimal မနေရာများမှတိကျသော,ရလဒ်ကတော့ '50.03'</span></span><span>
</span></span>ဤနည်းအားဖြင့်ဘဏ် system ာရေးစနစ်သည်အထူးတိကျသောတွက်ချက်မှုရလဒ်များကိုရရှိစေပြီးအမှားအယွင်းများကြောင့်ဖြစ်ပေါ်လာသောငွေကြေးဆိုင်ရာဆုံးရှုံးမှုများကိုရှောင်ရှားနိုင်သည်။
ကြီးမားသောတိကျသောတန်ဖိုးများကိုကိုင်တွယ်ရာတွင် BCSub သည် ကောင်းမွန်စွာလုပ်ဆောင်သော်လည်းစွမ်းဆောင်ရည်မှာအချို့သောစွမ်းဆောင်ရည်ရှိသည်။ တွက်ချက်မှုတစ်ခုချင်းစီသည် strings များပြုလုပ်ရန်နှင့်မြင့်မားသောတိကျသောစစ်ဆင်ရေးများပြုလုပ်ရန်လိုအပ်သည့်အတွက် BCSUB သည် floating point နံပါတ်များကို သုံး. နုတ်သင်္ကေတများအသုံးပြုခြင်းထက်အနည်းငယ်နှေးနိုင်သည်။ သို့သော်ဤစွမ်းဆောင်ရည်ကွာခြားမှုသည်ဘဏ် systems ာရေးစနစ်များတွင်အထူးသဖြင့်စနစ်သည်အဓိကအားဖြင့်တိကျမှန်ကန်မှုထက်တိကျမှန်ကန်မှုထက်တိကျမှန်ကန်မှုကိုအာရုံစိုက်သည်။ ထို့အပြင်ခေတ်သစ်ဆာဗာအများစုတွင် BCMATH စာကြည့်တိုက်၏ကွပ်မျက်မှုသည်ငွေကြေးဆိုင်ရာစနစ်အများစု၏လိုအပ်ချက်များကိုဖြည့်ဆည်းရန်လုံလောက်သည်။
ရိုးရှင်းသောဖြည့်စွက်ခြင်းနှင့်နုတ်ခြင်းလုပ်ငန်းများအပြင် BCSUB function ကိုအတိုးနှုန်းတွက်ချက်ခြင်း, အရောင်းအ 0 ယ်တွက်ချက်ခြင်း, ငွေလဲနှုန်းပြောင်းလဲခြင်းစသည့်အခြားအခြေအနေများတွင်ကျယ်ပြန့်စွာအသုံးပြုသည် ။
ဥပမာအားဖြင့်, အတိုးတွက်ချက်မှုကိုတွက်ချက်သောအခါကျောင်းအုပ်ကြီးသည်ယွမ် 1000 ဖြစ်ပြီးနှစ်စဉ်အတိုးနှုန်းမှာ 5% ရှိပြီးတစ်နှစ်အကြာတွင်အကျိုးစီးပွားအတွက်လိုအပ်သည်။
<span><span><span class="hljs-variable">$principal</span></span><span> = </span><span><span class="hljs-string">'1000'</span></span><span>;
</span><span><span class="hljs-variable">$rate</span></span><span> = </span><span><span class="hljs-string">'0.05'</span></span><span>;
</span><span><span class="hljs-variable">$interest</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bcsub</span></span><span>(</span><span><span class="hljs-variable">$principal</span></span><span>, </span><span><span class="hljs-title function_ invoke__">bcmul</span></span><span>(</span><span><span class="hljs-variable">$principal</span></span><span>, </span><span><span class="hljs-variable">$rate</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>), </span><span><span class="hljs-number">2</span></span><span>);
</span></span>ဤကိစ္စတွင် BCMUL နှင့် BCSUB တို့အား floating အမှားအယွင်းများ၏အကျိုးသက်ရောက်မှုကိုရှောင်ရှားရန်နှင့်စိတ် 0 င်စားသောတွက်ချက်မှုများတိကျမှန်ကန်မှုကိုရှောင်ရှားရန် BCMUL နှင့် BCSUB တို့ပေါင်းစပ်ထားသည်။