// ************************************************************
// 
// ************************************************************
Math.ceil2  = Math.ceil;
Math.floor2 = Math.floor;
Math.round2 = Math.round;



// ************************************************************
// ceilオーバーライド
// ************************************************************
Math.ceil = function (num,point)
{
	if(isNaN(num) && isNaN(point)){return NaN;}
	if(!point){return Math.ceil2(num);}

	var place = Number('1e+'+Math.abs(point));

	if(point > 0){num = Math.ceil2(Math.floor2((num/place)*10)/10)*place;}
	if(point < 0){num = Math.ceil2(num*place)/place;}

	return num;
}



// ************************************************************
// floorオーバーライド
// ************************************************************
Math.floor = function (num,point)
{
	if(isNaN(num) && isNaN(point)){return NaN;}
	if(!point){return Math.floor2(num);}
	
	var place = Number('1e+'+Math.abs(point));

	if(point > 0){num = Math.floor2(Math.floor2((num/place)*10)/10)*place;}
	if(point < 0){num = Math.floor2(num*place)/place;}

	return num;
}



// ************************************************************
// roundオーバーライド
// ************************************************************
Math.round = function (num,point)
{
	if(isNaN(num) && isNaN(point)){return NaN;}
	if(!point){return Math.round2(num);}

	var place = Number('1e+'+Math.abs(point));

	if(point > 0){num = Math.round2(Math.floor2((num/place)*10)/10)*place;}
	if(point < 0){num = Math.round2(num*place)/place;}
	
	return num;
}
