Jump to content

Issue with numbers under .5 ??


joyser

Recommended Posts

I have the following:

$decimal is a number above 1.0.

function change_number($decimal){


$decimal--;
$divider=$decimal;


	$q=1;
	while($new_decimal != $decimal)
	{

		$decimal = $divider*$q;
		$new_decimal = explode(".",$decimal);
		$new_decimal = $new_decimal[0];


		$q++;
	}


return $decimal."/".$decimal/$divider;	
}

 

Anytime I have a number under 1.5 as $decimal, the while() loop does not function properly?

any ideas?

 

Link to comment
https://forums.phpfreaks.com/topic/196118-issue-with-numbers-under-5/
Share on other sites

found this: http://www.zend.com//code/codex.php?ozid=175&single=1

 

Slightly edited it:

class dec2fraction
{
function convert($number, $top_heavy = false)
{
	if (strpos($number, '.') === false) $number .= '.0';
	list ($whole, $numerator) = explode ('.', $number);
	$denominator = 1 . str_repeat (0, strlen ($numerator));
	$GCD = self::GCD($numerator, $denominator);
	$numerator /= $GCD;
	$denominator /= $GCD;
	if ($top_heavy)
	{
		$numerator = $numerator + ($whole * $denominator);
		$whole = 0;
	}
	return array('whole' => (int) $whole, 'numerator' => $numerator, 'denominator' => $denominator);
}
function GCD ($a, $b)
{
	while ( $b != 0)
	{
		$remainder = $a % $b;
		$a = $b;
		$b = $remainder;
	}
	return abs ($a);
}
}

var_dump(dec2fraction::convert(3.14, true));
var_dump(dec2fraction::convert(3.14, false));
var_dump(dec2fraction::convert(3, true));
var_dump(dec2fraction::convert(3, false));
var_dump(dec2fraction::convert(5.25, true));
var_dump(dec2fraction::convert(5.25, false));
/*
OUTPUT

array
  'whole' => int 0
  'numerator' => int 157
  'denominator' => int 50

array
  'whole' => int 3
  'numerator' => int 7
  'denominator' => int 50

array
  'whole' => int 0
  'numerator' => int 3
  'denominator' => int 1

array
  'whole' => int 3
  'numerator' => int 0
  'denominator' => int 1

array
  'whole' => int 0
  'numerator' => int 21
  'denominator' => int 4

array
  'whole' => int 5
  'numerator' => int 1
  'denominator' => int 4

*/

 

Hope this helps

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.