แนะนำตัว
ข้อผิดพลาดทางคณิตศาสตร์ คลาสสืบทอดมาจาก ข้อผิดพลาด ระดับ. ข้อผิดพลาดประเภทนี้อาจเกิดขึ้นขณะดำเนินการทางคณิตศาสตร์บางอย่าง สถานการณ์หนึ่งคือพยายามดำเนินการกะระดับบิตด้วยจำนวนเงินติดลบ ข้อผิดพลาดนี้เกิดขึ้นเมื่อเรียกใช้ intdiv() ฟังก์ชันส่งผลให้มีค่าเกินขอบเขตที่ถูกต้องของจำนวนเต็ม
ตัวอย่างข้อผิดพลาดทางคณิตศาสตร์
ในตัวอย่างต่อไปนี้ มีความพยายามที่จะใช้ตัวดำเนินการกะไบนารีกับตัวถูกดำเนินการเชิงลบ ซึ่งส่งผลให้เกิดข้อผิดพลาดทางคณิตศาสตร์
ตัวอย่าง
<?php try { $a = 10; $b = -3; $result = $a << $b; } catch (ArithmeticError $e) { echo $e->getMessage(); } ?>
ผลลัพธ์
สิ่งนี้จะทำให้เกิดผลลัพธ์ดังต่อไปนี้ -
Bit shift by negative number
หากโทรไปที่ intdiv() ฟังก์ชันส่งผลให้จำนวนเต็มไม่ถูกต้อง ArithmeticError ถูกส่งออกไป ตามที่แสดงในตัวอย่างด้านล่าง จำนวนเต็มขั้นต่ำที่อนุญาตใน PHP (PHP_INT_MIN ) ไม่สามารถหารด้วย -1
ตัวอย่าง
<?php try { $a = PHP_INT_MIN; $b = -1; $result = intdiv($a, $b); echo $result; } catch (ArithmeticError $e) { echo $e->getMessage(); } ?>
ผลลัพธ์
สิ่งนี้จะทำให้เกิดผลลัพธ์ดังต่อไปนี้ -
Division of PHP_INT_MIN by -1 is not an integer