|
<script language="JavaScript" type="text/javascript">
<!--
//copyright(C) 2005 あう http://www5c.biglobe.ne.jp/~horoau/
//ver1.0
Math.ceil2 = Math.ceil;
Math.floor2 = Math.floor;
Math.round2 = Math.round;
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;}
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;}
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;}
// -->
</script>
|
[ 2005.1.18 ] ver.1.0 |
|
桁指定での四捨五入なんて基本的には10の倍数をかけて(または割って)四捨五入して
元に戻すために同じ数で割れば(またはかける)いいだけのことなんだけど
注意事項にも書いたように丸め誤差があるからね。
一応影響が最小限になるようには作ってあるけど
数値として扱う以上は限界があるんだよね。
丸め誤差や指数になるのを防いで巨大な桁数を扱う方法がないわけじゃないけど
そういうクラス作るって需要があるのかどうかがね。
それにJavaScriptの場合、演算子のオーバーライドが出来ないから
扱いが面倒なものになりそうな気もするし。
|
|
ウェブ木箱
copyright(C) 2005 あう