как сделать такое в пхп?

whitestuff

Новичок
как сделать такое в пхп?

long func(float a)
{
union { float f; long l; } u; u.f = a;
return u.l;
}

как такое сделать в php :D?

p.s. о том что делает этот код в си и куда надо копать в пхп я знаю, просто может кто-то уже сталкивался и сходу подскажет решение?
 

Krishna

Продался Java
Wicked
Чё, правда чтоль? )
А если подумать? :)

-~{}~ 04.03.09 15:20:

whitestuff
У тебя задача конкретно какая? Смысл приведённого кода на Си достаточно неочевиден.

-~{}~ 04.03.09 15:22:

о том что делает этот код в си и куда надо копать в пхп я знаю,
Что он по твоему делает в си?
 

whitestuff

Новичок
хочу сделать как в яве:
public static int floatToIntBits(float value)
Returns a representation of the specified floating-point value according to the IEEE 754 floating-point "single format" bit layout.

-~{}~ 04.03.09 15:24:

Wicked
к сожалению до этого я бы и сам додумался... к сожалению... но спасибо за участие...
 

Krishna

Продался Java
Пхп язык нестрогой типизации. Вряд ли подобное в принципе возможно, хотя на 100% утверждать не буду.
Но буду на 99% :)

-~{}~ 04.03.09 15:27:

whitestuff
Юмор в том, что все переменные в пхп собственно и хранятся в unit (см. zval). Но вот подобное преобразование кажется не предусмотрено для численных типов.

-~{}~ 04.03.09 15:32:

и куда надо копать в пхп я знаю
И какие идеи, любопытно?

-~{}~ 04.03.09 15:47:

хочу сделать как в яве:
public static int floatToIntBits(float value)
Returns a representation of the specified floating-point value according to the IEEE 754 floating-point "single format" bit layout.
И я все-таки не понял, какое практическое применение ты собираешься извлечь из этого метода?
Как крайний случай реализации такого пожелания - написать свой экстеншен для пхп.
 

whitestuff

Новичок
причем тут строгий не строгий... это просто числа и операции над ними..

$float = 1.3534;
$floatString = (string) $float;
$binaryString = base_convert($floatString, 10, 2);
$integer = base_convert($binaryString, 2, 10);

че то в этом духе...

-~{}~ 04.03.09 16:03:

Krishna
практическое применение -- коммерческая тайна :)... я понимаю зачем ты спрашиваешь, но все же не скажу :Р...
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
whitestuff дурь это, потому и "тайна"
(int)str_replace('.','',(string) $float);

-~{}~ 05.03.09 01:28:

а если уже нужна точность за 10м знаком, то
PHP:
$float = 1.23456789012346;
echo str_replace('.','',rtrim(sprintf("%.14f", $float),'0'));
но в PHP флоаты 14-разрядные по дефолту, а инт - только знаковый, и есть вероятность int overflow
так что лучше в инт назад не возвращаться
 

whitestuff

Новичок
grigori
никто не спорит что дурь. но вопрос не в практическом применении... вот задался я таким вопросом, хорошо что ты умен и нашел время меня проконсультировать. никто не говорил вообще о практическом применении этого кода, может я им просто так задался... херней пострадать в свободное от работы время...

-~{}~ 05.03.09 13:21:

и тему, кстати, сразу создал в оффтопике, что бы не было подобного рода нареканий, мол я самый глупый и телега моя на квадратных колесах... и смайликами сообщение снабдил.. короче критика не уместна... то что инт только знаковый, каюсь, не учел.. действительно, смысл кода сводится к нулю..
 
Сверху