<?php
$ulamekOkresowy = '23.617096096096';
//$ulamekOkresowy = '23.6170960961';
//$ulamekOkresowy = '1.3333333333333';
//$ulamekOkresowy = '1.434343434343';
//$ulamekOkresowy = '1.4343434343434';
//$ulamekOkresowy = '1.54343434343434';
//$ulamekOkresowy = bcdiv( 4, 3, 10 );
//$ulamekOkresowy = bcdiv( 1234, 15, 10 );
if( preg_match( '/.[0-9]*?([0-9]+?)1+([0-9]*)$/', $ulamekOkresowy, $okres ) ) {
if( ( $okres[2] != '' ) && strpos( $okres[1
], $okres[2
] ) !== 0
) { echo( "<b>{$ulamekOkresowy}</b> nie jest ułamkiem okresowym" ); }
else
{
$ulamekOkresowy = str_replace( strstr( $ulamekOkresowy, $okres[1] ), "({$okres[1]})", $ulamekOkresowy );
echo( "Okres: <b>{$okres[1]}</b><br>" ); echo( "Ułamek okresowy: <b>{$ulamekOkresowy}</b>" ); }
}
else {
echo( "<b>{$ulamekOkresowy}</b> nie jest ułamkiem okresowym" ); }
?>
Ten kod powinien sobie poradzić z większością ułamków okresowych. Wymaga on jednak używania
Binary Calculatora do wykonywania działań matematycznych, ponieważ zwykłe floaty są tylko przybliżoną wartością dzielenia.