You are here: Re: large float's « PHP Programming Language « IT news, forums, messages
Re: large float's

Posted by Oli Filth on 02/23/06 16:51

yawnmoth said the following on 23/02/2006 06:00:
> According to php.net, the largest possible float is ~1.8e308.
> wikipedia.org offers more insight, suggesting that is, exactly,
> 0x7FEFFFFFFFFFFFFF. This sorta begs the question... how can this
> number be represented in PHP without resorting to the decimal notation?
>

The maximum floating-point value is platform dependent. For a 64-bit
platform, it's ~1.8e308, but for a 32-bit platform it's ~3.4e38
(assuming you're using the IEEE 754 standard).

This code converts from a hex-representation to a floating-point
representation (for 32-bit):


define("LENGTH", 32);
define("SIGN_BIT", 31);
define("EXPONENT_MSB", 30);
define("EXPONENT_LSB", 23);
define("MANTISSA_MSB", 22);
define("MANTISSA_LSB", 0);

function hex2float($strHex)
{
$dec = hexdec($strHex);
$sign = ($dec & (1 << SIGN_BIT)) != 0;
$exp = (($dec & ((2 << EXPONENT_MSB) - (1 << EXPONENT_LSB))) >>
EXPONENT_LSB)
- (1 << (EXPONENT_MSB - EXPONENT_LSB))
- (MANTISSA_MSB - MANTISSA_LSB);
$man = (($dec & ((2 << MANTISSA_MSB) - (1 << MANTISSA_LSB))) >>
MANTISSA_LSB)
+ (2 << (MANTISSA_MSB - MANTISSA_LSB));
$float = floatval($man * pow(2, $exp) * ($sign ? -1 : 1));
}


For a 64-bit version, you'll need to alter the constants; you can get
the required values from
http://stevehollasch.com/cgindex/coding/ieeefloat.html.

Note that this code doesn't deal with special cases, i.e. NaN, infinity,
etc.

--
Oli

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация