数値に3桁ごとの桁区切を入れたり、桁区切入りの数字文字列を元に戻したりするJavaScriptです。
HTMLの<head>〜</head>内に、スクリプトをそのままコピーペーストすれば使えます。
JavaScriptは紫
、変更可能箇所は赤で表示します。
小数点入りの数字(1バイト)を渡すと、3桁ごとにカンマを入れて返します。
扱える数字は
12345
1234.567
-12345.67
の形式です。
1バイト数字でないなど、不適切な値が渡された場合のエラー処理はしていません。
<script type="text/javascript">
<!--
/* 3桁区切書式に変換する。引数Numericは任意の1バイト数字 */
function num2fig(Numeric){
Numeric += '';
//うっかり入っていたカンマを消す(=fig2num())
var Separator = Numeric.indexOf(',',0);
while (Separator != -1){
Numeric = Numeric.substring(0, Separator) + Numeric.substring(Separator+1, Numeric.length);
Separator = Numeric.indexOf(',',0);
}
//小数点を探し、小数点以下と整数部を分割して保持する
var DecimalPoint = Numeric.lastIndexOf('.');
if (DecimalPoint == -1){
var Decimals = '';
var Integers = Numeric + '';
} else {
var Decimals = Numeric.substring(DecimalPoint,Numeric.length) + '';
var Integers = Numeric.substring(0,DecimalPoint) + '';
}
//整数部の文字列長を3の倍数にする。足りない分は手前に' 'を埋め込む
Blanks = Integers.length % 3;
if (Blanks != 0){
for (var i = 0; 3-Blanks > i ; i++){
Integers = ' ' + Integers;
}
}
//整数文字列先頭から3文字おきにカンマを挿入する
//先頭がマイナス符号の時は負数として処理する
FigureInteger = Integers.substring(0,3);
var j = 2;
if (Integers.charAt(2) == '-'){
FigureInteger = FigureInteger + Integers.substring(3,6);
j=4;
}
for (i = j; Integers.length > i ; i++){
if (i % 3 == 0){
FigureInteger = FigureInteger + ',' + Integers.substring(i,i+3);
}
}
//臨時に入れておいた' 'を削除する
while (FigureInteger.charAt(0) == ' '){
FigureInteger = FigureInteger.substring(1,FigureInteger.length);
}
//整形済みの整数部と、待避してあった小数部を連結。連結した文字列を返して終了!
CommaNumber = FigureInteger + Decimals;
return CommaNumber;
}
//-->
</script>
試しに使ってみましょう。
上のテキストボックスに任意の数値を入力して、ボタンを押してみて下さい。
カンマ入りの数字(1バイト)を渡すと、カンマを抜いて返します。
文字が1バイトでないなど、不適切な値が渡された場合のエラー処理はしていません。
<script type="text/javascript">
<!--
/* 桁区切のカンマを消す。引数FigureNumは、カンマ入りの1バイト数字文字列 */
function fig2num(FigureNum){
var Numeric = FigureNum;
//カンマをすべて消す
var Separator = Numeric.indexOf(',',0);
while (Separator != -1){
Numeric = Numeric.substring(0, Separator) + Numeric.substring(Separator+1, Numeric.length);
Separator = Numeric.indexOf(',',0);
}
//カンマ消去後の数値を返して終了!
return Numeric;
}
//-->
</script>
試しに使ってみましょう。
上のテキストボックスに任意の数値を入力して、ボタンを押してみて下さい。
小数点入りの数字(1バイト)を渡すと、小数点位置で桁を揃えたものを返します。カンマ区切数字も使えます。
小数点桁数を指定した場合、整数には".0"が付加されます。
フォーム内では、等幅フォントで表示するブラウザ(Netscape等)でのみ正常動作します。(MSIEとiCabはプロポーショナルフォントのようです)
なお、桁揃えに1バイトスペースを使っているため、このままではHTML本文で正常表示されません。(HTMLは、複数スペースをひとつに圧縮してしまう)
文字が1バイトでない場合、渡された数の桁数が揃えたい桁数よりも長い場合、小数点以下の桁数が実際桁よりも少ない場合(多い場合は問題なし)等々、不適切な値が渡された場合のエラー処理はしていません。
また、小数点以下の桁数をゼロにすると、整数部分が指定した長さに調節されます。
ま、おまけです(一番手間どったけど(^^;))。
<script type="text/javascript">
<!--
/* 小数点位置で桁を揃える
引数Numericは1バイト数字(または1バイトの桁区切数字文字列)、
FixLengthは揃えたい全体の桁数、
PlacesOfDecimalsは小数点以下の桁数
*/
function fixnumber(Numeric,FixLength,PlacesOfDecimals){
var FixNum = Numeric + '';
//小数点を探し、小数点以下と整数部を分割して保持する
var DecimalPoint = FixNum.lastIndexOf('.');
if (DecimalPoint == -1){
Decimals = '';
Integers = FixNum;
} else {
Decimals = FixNum.substring(DecimalPoint,FixNum.length) + '';
Integers = FixNum.substring(0,DecimalPoint) + '';
}
//整数部分を桁揃えする
var IntMargin = FixLength - PlacesOfDecimals - Integers.length;
//小数点以下桁数が指定されていたら、前方に埋め込む文字数を1(小数点の分)だけ減らす
if (PlacesOfDecimals > 0){
IntMargin--;
}
if (IntMargin > 0){
for (var i = 0; IntMargin > i ; i++){
//↓の'*'を変えれば、その文字で埋めます。
FixNum = '*' + FixNum;
}
}
//右寄せに対応できるよう、小数点以下の不足桁も埋めておく
var DecMargin = FixLength - FixNum.length;
if ((DecMargin > 0) && (PlacesOfDecimals > 0)){
//小数点以下が指定されていて、かつ対象数字が整数の場合、'.0'を付ける
if (Decimals == ''){
FixNum += '.0';
DecMargin = DecMargin - 2;
}
for (var i = 0; DecMargin > i ; i++){
//↓の'*'を変えれば、その文字で埋めます。
FixNum += '*';
}
}
//整形済みの文字列を返して終了!
return FixNum;
}
//-->
</script>
試しに使ってみましょう。
上のテキストボックスに任意の数値を入力して、ボタンを押してみて下さい。