سؤال

أحتاج إلى محاكاة ∞ في PHP.

لهذا السبب min(∞,$number) دائما $number.

لا يوجد حل صحيح

نصائح أخرى

أفترض ذلك، لأعداد أعداد صحيحة، يمكنك استخدامها PHP_INT_MAX ، رمز التالي:

var_dump(PHP_INT_MAX);

يعطي هذا الإخراج، على الجهاز الخاص بي:

int 2147483647


ولكن عليك ان تكون حذرا ؛ يرى تجاوز عدد صحيح (اقتباس) :

إذا واجه PHP عددا يتجاوز حدود النوع الصحيحة، فسيتم تفسيره كطفل بدلا من ذلك. أيضا، ستعيد العملية التي تنجم عن عدد وراء حدود نوع عدد صحيح تعويم بدلا من ذلك.

ومن أرقام النقطة العائمة صفحة الوثائق:

حجم تعويم يعتمد على النظام الأساسي، على الرغم من أنه بحد أقصى ~ 1.8E308 بدقة ما يقرب من 14 رقما عشريا هو قيمة شائعة (تنسيق IEEE 64 بت).

النظر في تجاوز عدد الأعداد الصحيحة، واعتمادا على قضيتك، قد يكون استخدام هذا النوع من القيمة هو الحل الأفضل (؟) ...

استخدام ثابت. PHP_INT_MAX.

http://php.net/manual/ar/language.types.integer.php.

هل يمكن أن تستخدم PHP_INT_MAX مستمر (انقر للحصول على مستندات دليل PHP).

ومع ذلك، قد ترغب في التفكير في ما إذا كنت حقا يحتاج لاستخدامها - يبدو وكأنه قليل من طلب غريب.

PHP فعلا لديه ثابت محدد مسبقا ل "اللانهاية": INF. وبعد هذا ليس كذلك صحيح اللانهاية، ولكن في الأساس أكبر قيمة تعويم ممكنة. على أنظمة 64 بت، أكبر تعويم بقسوة يساوي 1.8e308, ، لذلك يعتبر هذا يساوي اللانهاية.

$inf = INF;
var_dump(min($inf,PHP_INT_MAX)); // outputs int(9223372036854775807)
var_dump(min($inf,1.79e308)); // outputs float(1.79E+308)
var_dump(min($inf,1.799e308)); // outputs float(INF)
var_dump(min($inf,1.8e308)); // outputs float(INF)
var_dump($inf === 1.8e308); // outputs bool(true)

ملاحظة، سيتم إلغاء أي رقم مع قيمة أكبر من القيمة القصوى العائمة INF. وبعد لذلك إذا فعلنا ذلك، var_dump($inf === 1e50000);, هذا سيخرج أيضا true على الرغم من أن الحد الأقصى تعويم أقل من هذا.

أفترض، على افتراض أن هذا صحيح، يمكنك استخدام ثابت PHP_INT_MAX ثابتا.

دقيقة (رقم $، $ رقم + 1)؟

في بيرل يمكنك استخدام

$INF = 9**9E9;

وهو أكبر من أي قيمة يمكنك تخزينها في أرقام النقطة العائمة IEEE. وهذا يعمل حقا كما هو مقصود: أي عدد غير لانهائي سيكون أصغر من $INF:

$N < $INF

صحيح عن أي رقم "طبيعي" $N.

ربما تستخدمه في PHP أيضا؟

min($number,$number) دائما $number (صحيح أيضا ل max() بالطبع بكل تأكيد).

إذا كان مصدر قلقك الوحيد هو وظيفة المقارنة، فعندئذ نعم، يمكنك استخدام الصفيف ()، فسيكون دائما أكبر من أي رقم

مثل

echo min(array(), 9999999999999999);

أو

if (array() > 9999999999999999) {
  echo 'array won';
} else {
  echo 'number won';
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top