<?php
/**
* Konwertuje libczbe zmiennoprzeinkowa DEC -> BIN
*
* @param $floatNumber float liczba ktora konwertujemy
* @param $intPrecision integer
* @param $boolTrim boolean obcinac koncowe zera czy nie)
* @return float liczba skonwertowana do syst buinarnego
*/
function floatDecToBin( $floatNumber, $intPrecision, $boolTrim )
{
$intDestBase = 2;
// czesc calkowita
$strIntegerPartBin = decbin( $arrNumberParts[ 0
] );
// czesc ulamkowa
$strFractionPartBin = '';
$temp = 0;
$fraction = floatval( '.' . $arrNumberParts[ 1
] ); // skonwertuj czesc ulamkowa (bez kropki) do ulamka for ( $i = 0; $i < $intPrecision; $i++ )
{
$fraction *= $intDestBase;
$fl = floor( $fraction ); $strFractionPartBin .= $fl;// dopisz kolejna cyfre (wartosc calkowita iloczynu)
$fraction -= $fl; // 'odetnij' czesc calkowita
}
$value = $strIntegerPartBin . '.' . $strFractionPartBin;
}
print( floatDecToBin
( '12.625', 6
, TRUE ) . "n" ); // 101.101 (b) print( floatDecToBin
( '12.625', 6
, FALSE ) . "n" ); // 101.101000 (b) print( floatDecToBin
( '12.625', 1
, FALSE ) . "n" ); // 101.1 (b) ?>
Pozniej moze dorobie funkcje ogolne, dla dowolnych baz, w obu kierunkach.