Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Странности в работе операции %
 
 автор: coloboc66   (21.10.2008 в 09:50)   письмо автору
 
 

echo $f1=410157381000%2551443000;

выводит результат: 391963584
хотя должно вывести: 1926501000
Причём в ява-скрипт такой же операцией:
alert (410157381000%2551443000);

результат получается именно такой, как и ожидается: 1926501000
И как это всё можно объяснить? Вот так вот не перепроверишь, и вся работа насмарку...

  Ответить  
 
 автор: Trianon   (21.10.2008 в 10:55)   письмо автору
 
   для: coloboc66   (21.10.2008 в 09:50)
 

Вообще-то эта операция точно определена лишь для целых чисел.
А у Вас делимое в диапазон целых явно не попадает.

  Ответить  
 
 автор: coloboc66   (21.10.2008 в 11:02)   письмо автору
 
   для: Trianon   (21.10.2008 в 10:55)
 

Не понял: 410157381000 не является целым числом??? Может и так, но тогда экскурс в историю - а что называется целым числом?

  Ответить  
 
 автор: Trianon   (21.10.2008 в 11:20)   письмо автору
 
   для: coloboc66   (21.10.2008 в 11:02)
 

В 32-разрядном php целым числом называется оное в диапазоне [-2^31 .... 2^31-1]
т.е. от -2147483648 до 2147483647

А чтобы убедиться, достаточно поглядеть var_dump(410157381000)

  Ответить  
 
 автор: coloboc66   (21.10.2008 в 11:45)   письмо автору
 
   для: Trianon   (21.10.2008 в 11:20)
 

1. Под знаком ^ понимается степень?
2. То есть РНР считает типом этого числа не int, a float ?

  Ответить  
 
 автор: Trianon   (21.10.2008 в 11:56)   письмо автору
 
   для: coloboc66   (21.10.2008 в 11:45)
 

>1. Под знаком ^ понимается степень?
В этой моей строке - да.

>2. То есть РНР считает типом этого числа не int, a float ?
Да. Потому что в формате float он может его представить хотя бы приближенно.
А в 4-байтовый int не запихнет никаким боком.

  Ответить  
 
 автор: coloboc66   (21.10.2008 в 12:08)   письмо автору
 
   для: Trianon   (21.10.2008 в 11:56)
 

Однако ява-скрипт кое-где поумнее РНР будет, раз такое дело...

  Ответить  
 
 автор: Trianon   (21.10.2008 в 12:20)   письмо автору
 
   для: coloboc66   (21.10.2008 в 12:08)
 

ничуть. Это зависит от реализации браузера.
Я видел браузеры, в JS которых int точно такой же 32-разрядный.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования