Index: temp/trunk/data/lib/slib.php
===================================================================
--- temp/trunk/data/lib/slib.php	(revision 9856)
+++ temp/trunk/data/lib/slib.php	(revision 9857)
@@ -1111,5 +1111,5 @@
 function sfRound($value, $pow = 0){
 	$adjust = pow(10 ,$pow);
-	
+
 	// À°¿ô³î¤Ä0½Ð¤Ê¤±¤ì¤Ð·å¿ô»ØÄê¤ò¹Ô¤¦
 	if(sfIsInt($adjust) and $pow > 0){
@@ -1127,11 +1127,16 @@
 // ·å¿ô¤ò»ØÄê¤·¤ÆÀÚ¤ê¼Î¤Æ
 function sfFloor($value, $digit = 1){
-	
-	$digit = $digit-1;
+	$adjust = pow(10 ,$pow);
 	
 	// À°¿ô³î¤Ä0½Ð¤Ê¤±¤ì¤Ð·å¿ô»ØÄê¤ò¹Ô¤¦
-	if(sfIsInt($digit) and $digit != 0) $value = $value * 10 * $digit;
-	$ret = floor($value);
-	$ret = floor($ret/$adjust);
+	if(sfIsInt($adjust) and $pow > 0){
+		$ret = (floor($value * $adjust)/$adjust);
+		$ret = sfFloor($ret, $pow - 1);
+		return $ret;
+	}else{
+		$ret = floor($value);
+		$ret = floor($ret/$adjust);
+	}
+	
 	return $ret;
 }
@@ -1139,11 +1144,16 @@
 // ·å¿ô¤ò»ØÄê¤·¤ÆÀÚ¤ê¾å¤²
 function sfCeil($value, $digit = 1){
-	
-	$digit = $digit-1;
-
+	$adjust = pow(10 ,$pow);
+	
 	// À°¿ô³î¤Ä0½Ð¤Ê¤±¤ì¤Ð·å¿ô»ØÄê¤ò¹Ô¤¦
-	if(sfIsInt($digit) and $digit != 0) $value = $value * 10 * $digit;
-	$ret = ceil($value);
-	$ret = floor($ret/$adjust);
+	if(sfIsInt($adjust) and $pow > 0){
+		$ret = (floor($value * $adjust)/$adjust);
+		$ret = sfCeil($ret, $pow - 1);
+		return $ret;
+	}else{
+		$ret = ceil($value);
+		$ret = floor($ret/$adjust);
+	}
+
 	return $ret / 10 * $digit;
 }
Index: temp/trunk/html/test/kakinaka/tax.php
===================================================================
--- temp/trunk/html/test/kakinaka/tax.php	(revision 9849)
+++ temp/trunk/html/test/kakinaka/tax.php	(revision 9857)
@@ -4,7 +4,8 @@
 
 
-$tax = sfRound(5.4445,3);
+echo "»Í¼Î¸ÞÆþ¡§" . sfRound(5.4445,3);
+echo "ÀÚ¤ê¼Î¤Æ¡§" . sfFloor(5.4445,3);
+echo "ÀÚ¤ê¾å¤²¡§" . sfCeil(5.4445,3);
 
-sfprintr($tax);
 
 ?>
