float(2147483648)
int(-2147483648)
Форум → Программирование → PHP для идиотов → Что Я, %username% ненавижу в ПХП
Что Я, %username% ненавижу в ПХП
Страницы: ← Предыдущая страница • Следующая страница →
-
7 апреля 2010 г. 19:02, спустя 19 минут 10 секунд
PHP-FPM/PHP 5.3.2-dev/Ubuntu 9.10 (32) и PHP-FPM/PHP 5.2.10/FreeBSD 6.3 (32)Спустя 22 сек.я о том, что винда тут не причемhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
7 апреля 2010 г. 19:06, спустя 4 минуты 33 секунды
32 битки все подвержены, пхп хуево с типами нативными работает, я в начале этой темы писал об этом)
PHP-FPM/PHP 5.3.2-dev/Ubuntu 9.10 (32) и PHP-FPM/PHP 5.2.10/FreeBSD 6.3 (32)
float(2147483648)
int(-2147483648)Спустя 22 сек.я о том, что винда тут не причемСапожник без сапог -
7 апреля 2010 г. 19:10, спустя 3 минуты 19 секунд
Kubuntu 9.10 x64int(2147483648)
int(2147483648)
Чтобы переполнить 64 бита =) :$x = intval("8") * 1024 * 1024 * 1024 * 1024 * 1024 * 1024;
var_dump($x, intval($x));
/*
float(9.22337203685E+18)
int(-9223372036854775808)
*/
Происходит так, так как переполняется значение переменной, php улавливает тенденцию и приводит инт к числу с плавающей точкой. Значение инта в си всегда зависело от архитектуры/ос, об этом пишут во всех учебниках по си, поэтому в 32битной оси инт 32 бита, в 16битной 16, в 64 - 64бита, почему за основу инта php разработчики взяли именно int из си, а не long например, который всегда 32 бита куй знает.
При переводе из флоата в инт пхп просто тупо копирует значение до запятой, без проверки на переполнение, а старший бит в инте определяет знак, потому, так как еденичку в старший бит записало, значение становится отрицательным.
Как-то так, все просто до безобразия =)Work, buy, consume, die -
7 апреля 2010 г. 19:13, спустя 2 минуты 47 секунд
In [1]: x = int("2") * 1024 * 1024 * 1024
In [2]: x
Out[2]: 2147483648L
In [3]: int(x)
Out[3]: 2147483648Lhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
7 апреля 2010 г. 19:15, спустя 2 минуты 37 секунд
adw0rd, а ты пайтон на разных платформах тестил или на одной? ;)ιιlllιlllι унц-унц -
7 апреля 2010 г. 19:21, спустя 5 минут 23 секунды
Думаешь есть разница?)Спустя 23 сек.399999999999999 - 399999999999998
http://www.codinghorror.com/blog/2009/05/why-do-computers-suck-at-math.htmlСпустя 52 сек.In [4]: 399999999999999 - 399999999999998
Out[4]: 1Lhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
7 апреля 2010 г. 19:29, спустя 8 минут 46 секунд
я лошара, и низнаю си, инт тут непричем, это оптимизация по 64 битные системы (причем только никсы, в винде 32 бита инт в php)Work, buy, consume, die -
7 апреля 2010 г. 20:06, спустя 36 минут 53 секунды
А мне не нравится функция date тем, что в виндовых ос дата начинается с 1970 года, а в уникс системах как надо. Хотя это навернамана виндовс больше говно, чем пэхэпэ. -
-
26 мая 2010 г. 15:47, спустя 47 дней 17 часов 43 минуты
жаль, что так низя:$foo = ($r = $this->getRequest())->post('foo');
$bar = $r->post('bar'); -
26 мая 2010 г. 16:35, спустя 48 минут 1 секунду
Абырвалг, твой пример не из ряда вон простой, а вот так нельзя - ПИЗДЕЦ ЖАЛЬecho explode(",", "1,2,3,4,5")[0];
Сапожник без сапог -
26 мая 2010 г. 16:36, спустя 1 минуту 23 секунды
Ну это да, это уже обсуждали на одной из первых страниц. Если массив не ассоциативный - можно list использовать. -
26 мая 2010 г. 16:46, спустя 10 минут 10 секунд
что использовать я знаю :)
Ну это да, это уже обсуждали на одной из первых страниц. Если массив не ассоциативный - можно list использовать.
зы: лист можно и для ассоциативного юзать, если невано какой результат получишь)Сапожник без сапог -
26 мая 2010 г. 16:55, спустя 8 минут 36 секунд
что в виндовых ос дата начинается с 1970 года
это смотря где, вот у меня на работе она начинается с 1899 года ;) -
15 июня 2010 г. 12:16, спустя 19 дней 19 часов 21 минуту
class A
{
public static function c()
{
echo 'c';
}
}
$h = array('A', 'c');
$h();
хуй там, только строки так можно…Спустя 76 сек.и $h = 'A::c'; низя
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!