жЕКШЕ

жЕКНЕ ЩРН ВХЯКН ХГ ЛМНФЕЯРБЮ Z = {..., -2, -1, 0, 1, 2, ...}.

яЛНРПХРЕ РЮЙФЕ: жЕКШЕ ОПНХГБНКЭМНИ ДКХМШ / GMP, вХЯКЮ Я ОКЮБЮЧЫЕИ РНВЙНИ Х оПНХГБНКЭМЮЪ РНВМНЯРЭ / BCMath

яХМРЮЙЯХЯ

жЕКШЕ ЛНЦСР АШРЭ СЙЮГЮМШ Б ДЕЯЪРХВМНИ, ЬЕЯРМЮДЖЮРЕПХВМНИ ХКХ БНЯЭЛЕПХВМНИ ЯХЯРЕЛЕ ЯВХЯКЕМХЪ, ОН ФЕКЮМХЧ Я ОПЕДЬЕЯРБСЧЫХЛ ГМЮЙНЛ (- ХКХ +).

еЯКХ БШ ХЯОНКЭГСЕРЕ БНЯЭЛЕПХВМСЧ ЯХЯРЕЛС ЯВХЯКЕМХЪ, БШ ДНКФМШ ОПЕДБЮПХРЭ ВХЯКН 0 (МСКЕЛ), ДКЪ ХЯОНКЭГНБЮМХЪ ЬЕЯРМЮДЖЮРЕПХВМНИ ЯХЯРЕЛШ МСФМН ОНЯРЮБХРЭ ОЕПЕД ВХЯКНЛ 0x.

Пример 6-1. жЕКШЕ

<?php
$a
= 1234; # ДЕЯЪРХВМНЕ ВХЯКН
$a = -123; # НРПХЖЮРЕКЭМНЕ ВХЯКН
$a = 0123; # БНЯЭЛЕПХВМНЕ ВХЯКН (ЩЙБХБЮКЕМРМН 83 Б ДЕЯЪРХВМНИ ЯХЯРЕЛЕ)
$a = 0x1A; # ЬЕЯРМЮДЖЮРЕПХВМНЕ ВХЯКН (ЩЙБХБЮКЕМРМН 26 Б ДЕЯЪРХВМНИ ЯХЯРЕЛЕ)
?>
тНПЛЮКЭМН БНГЛНФМЮЪ ЯРПСЙРСПЮ ЖЕКШУ РЮЙНБЮ:

ДЕЯЪРХВМШЕ        : [1-9][0-9]*
                  | 0

ЬЕЯРМЮДЖЮРЕПХВМШЕ : 0[xX][0-9a-fA-F]+

БНЯЭЛЕПХВМШЕ      : 0[0-7]+

ЖЕКШЕ             : [+-]?ДЕЯЪРХВМШЕ
                  | [+-]?ЬЕЯРМЮДЖЮРЕПХВМШЕ
                  | [+-]?БНЯЭЛЕПХВМШЕ

пЮГЛЕП ЖЕКНЦН ГЮБХЯХР НР ОКЮРТНПЛШ, УНРЪ, ЙЮЙ ОПЮБХКН, ЛЮЙЯХЛЮКЭМНЕ ГМЮВЕМХЕ НЙНКН ДБСУ ЛХККХЮПДНБ (ЩРН 32-АХРМНЕ ГМЮЙНБНЕ). PHP МЕ ОНДДЕПФХБЮЕР АЕГГМЮЙНБШЕ ЖЕКШЕ.

оПЕБШЬЕМХЕ ПЮГЛЕПЮ ЖЕКНЦН

еЯКХ БШ НОПЕДЕКХРЕ ВХЯКН, ОПЕБШЬЮЧЫЕЕ ОПЕДЕКШ ЖЕКНЦН РХОЮ, НМН АСДЕР ХМРЕПОПЕРХПНБЮМН ЙЮЙ ВХЯКН Я ОКЮБЮЧЫЕИ РНВЙНИ. рЮЙФЕ, ЕЯКХ БШ ХЯОНКЭГСЕРЕ НОЕПЮРНП, ПЕГСКЭРЮРНЛ ПЮАНРШ ЙНРНПНЦН АСДЕР ВХЯКН, ОПЕБШЬЮЧЫЕЕ ОПЕДЕКШ ЖЕКНЦН, БЛЕЯРН МЕЦН АСДЕР БНГБПЮЫЕМН ВХЯКН Я ОКЮБЮЧЫЕИ РНВЙНИ.

<?php
$large_number
=  2147483647;
var_dump($large_number);
// БШБНД: int(2147483647)

$large_number =  2147483648;
var_dump($large_number);
// БШБНД: float(2147483648)

// ЩРН ЯОПЮБЕДКХБН Х ДКЪ ЬЕЯРМЮДЖЮРЕПХВМШУ ЖЕКШУ:
var_dump( 0x80000000 );
// БШБНД: float(2147483648)

$million = 1000000;
$large_number =  50000 * $million;
var_dump($large_number);
// БШБНД: float(50000000000)
?>

Внимание

й ЯНФЮКЕМХЧ, Б PHP АШКЮ НЬХАЙЮ, РЮЙ ВРН ЩРН МЕ БЯЕЦДЮ БЕПМН ПЮАНРЮЕР, ЙНЦДЮ ХЯОНКЭГСЧРЯЪ НРПХЖЮРЕКЭМШЕ ВХЯКЮ. мЮОПХЛЕП: ЙНЦДЮ БШ СЛМНФЮЕРЕ -50000 * $million, ПЕГСКЭРЮРНЛ АСДЕР -429496728. нДМЮЙН, ЕЯКХ НАЮ НОЕПЮМДЮ ОНКНФХРЕКЭМШ, ОПНАКЕЛ МЕ БНГМХЙЮЕР.

щРЮ НЬХАЙЮ СЯРПЮМЕМЮ Б PHP 4.1.0.

Б PHP МЕ ЯСЫЕЯРБСЕР НОЕПЮРНПЮ ДЕКЕМХЪ ЖЕКШУ. пЕГСКЭРЮРНЛ 1/2 АСДЕР ВХЯКН Я ОКЮБЮЧЫЕИ РНВЙНИ 0.5. бШ ЛНФЕРЕ ОПХБЕЯРХ ГМЮВЕМХЕ Й ЖЕКНЛС, ВРН БЯЕЦДЮ НЙПСЦКЪЕР ЕЦН Б ЛЕМЭЬСЧ ЯРНПНМС, КХАН ХЯОНКЭГНБЮРЭ ТСМЙЖХЧ round().

<?php
var_dump
(25/7);         // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7));  // float(4)
?>

оПЕНАПЮГНБЮМХЕ Б ЖЕКНЕ

дКЪ МЕЯНЛМЕММНЦН ОПЕНАПЮГНБЮМХЪ ГМЮВЕМХЪ Б ЖЕКНЕ ХЯОНКЭГСИРЕ ОПХБЕДЕМХЕ РХОЮ (int) ХКХ (integer). нДМЮЙН Б АНКЭЬХМЯРБЕ ЯКСВЮЕБ БЮЛ МЕР МЕНАУНДХЛНЯРХ ХЯОНКЭГНБЮРЭ ОПХБЕДЕМХЕ РХОЮ, ОНЯЙНКЭЙС ГМЮВЕМХЕ АСДЕР ЮБРНЛЮРХВЕЯЙХ ОПЕНАПЮГНБЮМН, ЕЯКХ НОЕПЮРНП, ТСМЙЖХЪ ХКХ СОПЮБКЪЧЫЮЪ ЙНМЯРПСЙЖХЪ РПЕАСЕР ЖЕКШИ ЮПЦСЛЕМР. бШ РЮЙФЕ ЛНФЕРЕ ОПЕНАПЮГНБЮРЭ ГМЮВЕМХЕ Б ЖЕКНЕ ОПХ ОНЛНЫХ ТСМЙЖХХ intval().

яЛНРПХРЕ РЮЙФЕ лЮМХОСКЪЖХХ Я РХОЮЛХ.

хГ АСКЕБЮ РХОЮ

FALSE ОПЕНАПЮГСЕРЯЪ Б 0 (МНКЭ), Ю TRUE - Б 1 (ЕДХМХЖС).

хГ ВХЯЕК Я ОКЮБЮЧЫЕИ РНВЙНИ

оПХ ОПЕНАПЮГНБЮМХХ ХГ ВХЯКЮ Я ОКЮБЮЧЫЕИ РНВЙНИ Б ЖЕКНЕ, ВХЯКН АСДЕР НЙПСЦКЕМН Б ЯРНПНМС МСКЪ.

еЯКХ ВХЯКН Я ОКЮБЮЧЫЕИ РНВЙНИ ОПЕБШЬЮЕР ОПЕДЕКШ ЖЕКНЦН (ЙЮЙ ОПЮБХКН, ЩРН +/- 2.15e+9 = 2^31), ПЕГСКЭРЮР АСДЕР МЕНОПЕДЕКЕММШЛ, РЮЙ ЙЮЙ ЖЕКНЕ МЕ ХЛЕЕР ДНЯРЮРНВМНИ РНВМНЯРХ, ВРНАШ БЕПМСРЭ БЕПМШИ ПЕГСКЭРЮР. б ЩРНЛ ЯКСВЮЕ МЕ АСДЕР БШБЕДЕМН МХ ОПЕДСОПЕФДЕМХЪ, МХ ДЮФЕ ГЮЛЕВЮМХЪ!

Внимание

мХЙНЦДЮ МЕ ОПХБНДХРЕ МЕХГБЕЯРМСЧ ДПНАЭ Й ЖЕКНЛС, РЮЙ ЙЮЙ ЩРН ЛНФЕР ХМНЦДЮ ДЮРЭ МЕНФХДЮММШЕ ПЕГСКЭРЮРШ.

<?php
echo (int) ( (0.1+0.7) * 10 ); // БШБНДХР 7!
?>

яЛНРПХРЕ АНКЕЕ ОНДПНАМН: ОПЕДСОПЕФДЕМХЕ Н РНВМНЯРХ ВХЯЕК Я ОКЮБЮЧЫЕИ РНВЙНИ.

хГ ДПСЦХУ РХОНБ

Предостережение

дКЪ ДПСЦХУ РХОНБ ОНБЕДЕМХЕ ОПЕНАПЮГНБЮМХЪ Б ЖЕКНЕ МЕ НОПЕДЕКЕМН. б МЮЯРНЪЫЕЕ БПЕЛЪ ОНБЕДЕМХЕ РЮЙНЕ ФЕ, ЙЮЙ ЕЯКХ АШ ГМЮВЕМХЕ ЯОЕПБЮ АШКН ОПЕНАПЮГНБЮМН Б АСКЕБ РХО. нДМЮЙН МЕ ОНКЮЦЮИРЕЯЭ МЮ ЩРН ОНБЕДЕМХЕ, РЮЙ ЙЮЙ НМ ЛНФЕР ХГЛЕМХРЭЯЪ АЕГ ОПЕДСОПЕФДЕМХЪ.


HIVE: All information for read only. Please respect copyright!
Hosted by hive йца: йХЕБЯЙЮЪ ЦНПНДЯЙЮЪ АХАКХНРЕЙЮ