Bunlara sürüşən vergüllü ədədlər deyilir. Ədəbiyyatda və praktikada float
, double
və ya real
kimi də təyin edilir. İki yazılma forması var. Adi yazılış forması cəbrdə yazılış forması ilə eynidir məsələn, 597.5267. Eksponensial yazılış forması isə ədədləri mantissin 5.975267 uyğun 102-a hasili kimi göstərməyə imkan verir. Sıfırdan kiçik ədədlər üçün 10-un üstü mənfi olur. Buna uyğun olaraq 0.00031 ədədini 3.1 × 10-4 kimi göstərmək olar. Beləliklə:
597.5267 => 5.975267×102 => 5.975267e+2 0.00031 => 3.1×10-4 => 3.1e-4
Kompüter proqramlarında yuxarı reqistr simvollarından istifadə etmək imkanı yoxdur, ona görə də ×10 ifadəsi e
simvolu şəklində yazılır və ondan sonra 10-un üstündəki qüvvət qeyd edilir. Aşağıdakı misalda $a
və $b
dəyişənlərinin qiymətləri tamamilə eynidir:
<?php $a = 597.5267; $b = 5.975267e+2; $a = 0.00031; $b = 3.1e-4; ?>
Sürüşən vergüllü ədədlərin aparat səviyyəsində realizasiyasının ona ayrılan baytlardan və mümkün olan diapazonundan asılı olaraq bir neçə modeli var. Proqramlaşdırma dillərinin əvvəlki versiyalarında sürüşən vergüllü ədədlərin modelini açıq şəkildə göstərmək olurdu. Single
(S), Extended
(E), Double
(D) modellərinə uyğun olaraq 4, 10 və 8 bayt ayrılırdı. Belə variantların olması onunla əlaqəlidir ki, əvvəllər prosessorların daxilində bir qurğu kimi soprosessor yox idi. Soprosessor sürüşən vergüllü ədədlərlə əməliyyatlar yerinə yetrimək – onların realizasiyası üçün lazımdır. Yəni prosessor səviyyəsində yalnız tam ədədlərlə əməliyyat etmək mümkün idi, sürüşən vergüllü ədələrlə isə əməliyyatları dilin kompilyatorunun yaradıcıları özləri nəzərə almalı idilər. Müasir dövrdə demək olar ki, belə problem yoxdur və bütün kompüterlər soprosessorla təchiz olunmuş olur. İstisna yalnız RISC-arxitekturalı superkompüterlər ola bilir. Onların sayı isə məhtuddur.
Məsələnin belə olması ona gətirib çıxarıb ki, sürüşən vergüllü ədədlərin realizasiyasi Double modelini realizasiya edən soprosessor tərəfindən müəyyən edilir və bu modelə 8 bayt ayrılır. Beləliklə, Double modeli uyğun olaraq ±2.23×10-308-dən ±1.79×10308-dək olan aralığı əhatə edir.
İcazə verilən diapazondan kənara çıxılarsa rəqəm əvəzinə sonsuzluğu göstərən INF
sabiti çap edilir. Belə ədədlərlə istənilən əməllər də INF
nəticəsini verir.
<?php echo 6.5e203; // 6.5E+203 echo 1.8e308; // INF echo $var - 1.8e308; // INF ?>
PHP-də INF
sabitindən başqa NAN
sabiti də var. Bu sabit icazə verilməyən rəqəm mənasında işlədilir. Məsələn, növbəti misalda -1-dən kvadrat kök almaq ifadəsi göstərilib:
<?php echo sqrt(-1); // NAN ?>
PHP-də kompleks ədədlərlə işləmək nəzərdə tutulmadığından bu misalda o, icazə verilməyən ədəd – NAN
nəticəsini qaytaracaq. INF
-də olduğu kimi NAN
üzərində də ixtiyari əməliyyatlar elə NAN
qaytarır.
2 thoughts on “PHP-də dəyişənlər. Double (həqiqi ədədlər)”