JavaScript:数字に桁区切を入れる 200006.26

数値に3桁ごとの桁区切を入れたり、桁区切入りの数字文字列を元に戻したりするJavaScriptです。

HTMLの<head>〜</head>内に、スクリプトをそのままコピーペーストすれば使えます。

JavaScriptは、変更可能箇所はで表示します。


■num2fig:数値を3桁区切にする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>

試しに使ってみましょう。
上のテキストボックスに任意の数値を入力して、ボタンを押してみて下さい。



■fig2num:数字文字列に入った3桁毎のカンマを削除するJavaScript

カンマ入りの数字(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>

試しに使ってみましょう。
上のテキストボックスに任意の数値を入力して、ボタンを押してみて下さい。



■fixnumber:数値を小数点位置で揃えて表示するJavaScript

小数点入りの数字(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>

試しに使ってみましょう。
上のテキストボックスに任意の数値を入力して、ボタンを押してみて下さい。

全体の桁数:  小数点以下の桁数:
数字1:
数字2: