トップページ > JavaScript > クラスライブラリ集 > 桁指定四捨五入
 
桁指定四捨五入
ver.1.0
<機能と特徴>
数学関数のceil(),floor(),round()が桁指定で使用可能になります。

例えば少数第一位までを求めるや100の位以下を切り捨てなどが可能です。
   
インフォメーション


公開日 2005.1.18
最終更新日 ---
バージョン ver 1.0
動作確認
IE5.0 IE6.0 NN4.7 NN6.2 NN7.0
Opera7.5 FireFox1.0
取扱難易度 ★☆☆☆☆難易度1
cookie 使用
CSS 不使用
更新履歴
---
 
リファレンス

 
ソース

<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;

//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;}

// -->
</script>

 
開発日誌

[ 2005.1.18 ] ver.1.0

桁指定での四捨五入なんて基本的には10の倍数をかけて(または割って)四捨五入して 元に戻すために同じ数で割れば(またはかける)いいだけのことなんだけど 注意事項にも書いたように丸め誤差があるからね。 一応影響が最小限になるようには作ってあるけど 数値として扱う以上は限界があるんだよね。 丸め誤差や指数になるのを防いで巨大な桁数を扱う方法がないわけじゃないけど そういうクラス作るって需要があるのかどうかがね。 それにJavaScriptの場合、演算子のオーバーライドが出来ないから 扱いが面倒なものになりそうな気もするし。



ウェブ木箱
copyright(C) 2005 あう