Toán tử mô đun được cho là hiển thị số dư còn lại. Thích cho echo(34%100)
kết quả đầu ra 34
. Nhưng tại sao tôi nhận được một lỗi "Division by zero
" cho mã này echo(34%4294967296)
Phân chia bằng lỗi 0 khi sử dụng mô đun
Trả lời
4294967296
là 2^32
và không thể được biểu diễn dưới dạng số 32 bit - nó kết thúc tốt đẹp trở lại 0. Nếu bạn sử dụng phiên bản 64-bit của PHP, nó có thể làm việc.
Bạn có thể sử dụng mô đun điểm động fmod để nhận được những gì bạn muốn mà không bị tràn.
vâng, tôi giải thích rằng trong http://computer-programming-forum.com/53-perl/f2805415f84c54e1.htm, nhưng cách khắc phục lỗi này? có cách nào khác hay không? –
PHP 64 bit chưa hỗ trợ các số nguyên 64 bit trên Windows, do đó, ngay cả điều đó cũng không giúp ích gì. – garrettmurray
Tôi đã thêm liên kết vào fmod có thể giúp bạn – mvp
https://bugs.php.net/bug.php?id=51731
2^31 is the largest integer you can get on Windows.
Nếu bạn vẫn muốn để mod số lượng lớn, sử dụng bcmod.
vì vậy, sự khác biệt giữa bcmod và fmod là gì? –
Fmod phôi cả hai bên để nổi, bcmod sử dụng một "số chính xác tùy ý" (đó là các kiểu số riêng). –
@NeilNeyman ah, vì vậy fmod cho thấy giá trị chính xác trong khi bcmod làm tròn giá trị? –
Có rất nhiều báo cáo về mod nhận được nhiều điều thú vị với số nguyên lớn trong php. Có thể là một tràn trong tính toán hoặc thậm chí trong số đó chính nó sẽ cung cấp cho bạn lỗi. Tốt nhất là sử dụng một thư viện số lớn cho điều đó. Kiểm tra gmp hoặc bcmath.
Tôi đã tìm thấy câu hỏi này đang tìm kiếm "chia cho số không lỗi khi sử dụng mô đun", nhưng lý do tại sao lại khác.
Modulus (nhà điều hành %
) sẽ không hoạt động khi từ chối nhỏ hơn 1. sử dụng fmod() giải quyết vấn đề.
Ví dụ:
$num = 5.1;
$den = .25;
echo ($num % $den);
// Outputs Warning: Division by zero
echo fmod($num, $den);
// Outputs 0.1
$num = 5.1;
$den = 1;
echo ($num % $den);
// Outputs 0, which is incorrect
echo fmod($num, $den);
// Outputs 0.1, which is correct
- 1. Python kiểu phân chia số nguyên & mô đun trong C
- 2. Lỗi khi cài đặt mô-đun node.js bằng cách sử dụng npm
- 3. Lỗi nhập phân luồng mô-đun Python
- 4. Mô-đun lỗi: kernelbase.dll. Nổ ứng dụng
- 5. Phân chia mô đun khi số đầu tiên nhỏ hơn số thứ hai
- 6. Tỉ lệ UIView bằng 0 khi sử dụng CGAffineTransformMakeScale
- 7. Lỗi khi cài đặt mô-đun python
- 8. C++ chia theo 0
- 9. "FATAL: Mô-đun không tìm thấy lỗi" bằng cách sử dụng modprobe
- 10. Chia cho số 0 bằng không
- 11. Ngừng mã python trong (Fortran) lỗi mô-đun bằng cách sử dụng f2py?
- 12. Khi nào để chia mã thành các tệp/mô-đun?
- 13. Khi nào sử dụng Mô-đun trong Zend Framework?
- 14. Phân phối gói python cùng với các phụ thuộc mô-đun bằng cách sử dụng RPM
- 15. Sự kiện nhấp chuột jQuery không hoạt động khi sử dụng "Mô-đun mô-đun"
- 16. Phân tách (mô đun) bằng các ngôn ngữ chức năng
- 17. Mô hình ZF2 được chia sẻ giữa các Mô-đun
- 18. Sử dụng mô-đun đa xử lý
- 19. Cách sửa lỗi mã hóa Unicode bằng mô-đun hashlib?
- 20. Python lỗi khi sử dụng MysqlDb - bộ mô-đun bị phản
- 21. Lỗi khi sử dụng mô-đun đa trong một daemon python
- 22. cx_Freeze thiếu lỗi mô-đun
- 23. Phân chia trong Java luôn dẫn đến số không (0)?
- 24. Tại sao phân chia số nguyên bằng 0 dẫn đến ngoại lệ dấu chấm động?
- 25. Loại trừ mục nhập bằng "0" khi sử dụng AVG
- 26. Bắt lỗi khi yêu cầu mô-đun trong node.js
- 27. Khi nào chúng ta sử dụng mô-đun ruby và sử dụng thành phần lớp học?
- 28. Tính toán tổng số phần nghìn giây bằng Python cho mô đun datetime có phân chia thực được kích hoạt
- 29. Mô-đun mô-đun nhập mô-đun chính
- 30. Phân cấp các mô-đun trong guice
sử dụng 'fmod echo (34 tuổi, 4294967296); 'in' 34' –
sử dụng 'tiếng vang bcmod ('34' , '4294967296');' [in' 34'] (http://3v4l.org/5lYTP) –
cả hai công trình fmod và bcmod, bây giờ tôi đang bối rối cái nào để sử dụng. Tôi đang xử lý số lượng lớn, chức năng nào bạn đề nghị, bcmod hoặc fmod? –