Calculator

Platform:  PHP
Published  Nov 21, 2009
Updated  Nov 21, 2009
besides the basic calc functions (+-*/) this can also do abbreviations for numbers ex:
calc("1m+3k-2") will return "1002998"
calc("1.1m+1m") will return "2100000"
calc("1.5*2") will return "3"

this will also calculate powers (^) and modulos (%) <?php
function calc($a) {
$functions="/(\+|\-|\*|\/|\^|\%)/";
$num=explode(chr(124),preg_replace($functions,"|",$a));
$a=str_split($a);$d=0;
foreach ($a as $b => $c) {
if (preg_match($functions,$c)) {
$sign[$d]=$c;$d++;
}
}$d=0;
while ($d<=count($num)) {
$num1=iif($num3,$num3,rep($num[$d]));
$num2=rep($num[$d+1]);
$sign1=$sign[iif($num3,$d,0)];
$d++;
if (preg_match("/./",$sign1)) {
switch ($sign1) {
case "+":
$num3=$num1+$num2;
break;
case "-":
$num3=$num1-$num2;
break;
case "*":
$num3=$num1*$num2;
break;
case "/":
$num3=$num1/$num2;
break;
case "^":
$x=$num2;$num3=1;
while ($x) {
$num3*=$num1;$x--;
}
break;
case "%":
$num3=$num1%$num2;
break;
}
}else return $num3;
}return $num3;
}
function iif($if,$T,$F) {
if ($if) return $T;
else return $F;
}
function rep($num) {
if (preg_match("/.*\.(.*)/",$num,$len)&&preg_match("/[a-z]/i",$num)) {
$len=strlen(preg_replace("/\D/","",$len[1])).chr(10);
$k=str_repeat(0,3-$len);$m=str_repeat(0,6-$len);$b=str_repeat(0,9-$len);
$num=str_replace("k",$k,str_replace("m",$m,str_replace("b",$b,str_replace(".","",$num))));
}elseif (preg_match("/.*\.(.*)/",$num,$len)&&!preg_match("/[a-z]/i",$num))
$num=$num;
else
$num=str_replace("k","000",str_replace("m","000000",str_replace("b","000000000",$num)));
return $num;
}
?>

Comments

Sign in to comment.
sunslayer   -  Nov 23, 2009
ye it is pretty if u use it for that purpose but the main reason i made this was for calculating like "1m+2.4m" etc.
 Respond  
^Neptune   -  Nov 23, 2009
Good snippet, nice use of case statements.

However it is a tad useless since you can just do
Code
 

Code
 

Code
 

and such.

I would rather just use built in functionalities than having to include a function in every PHP script. Still, nice example though.
 Respond  
sunslayer   -  Nov 21, 2009
lies

Calculator

PHP Code
 Respond  
Ghost-writer   -  Nov 21, 2009
nubcake is this mirc or php?


Calculator
mIRC Code


Make up your mind.
 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.