LoginSignup
3
3

More than 5 years have passed since last update.

JavaScriptでPHPのnumber_format

Posted at

number_format()は、
数値に3桁ずつカンマを挿入してくれるPHPの関数です。
これをJavaScriptで実現する関数を作ってみました。

整数だけだったら正規表現でなんとかなるんですが、小数も対応しようとするとちょっと大変です。
以下の関数では本家number_formatの第二引数(小数点以下の桁数)まで対応してみました。

/**
 * 数値をカンマ区切りに変換する
 */
function number_format(num, decimals)
{
    //小数点以下の表示桁数
    var _decimals = decimals | 0;

    //指定桁以下を切り捨てた数値
    var _shift = Math.pow(10, _decimals);
    var _floor = Math.floor(num * _shift) / _shift;

    //整数部と小数部に分ける
    var _integerPart = Math.floor(_floor);
    var _decimalPart = (_floor.toString().split('.').length > 1) ? _floor.toString().split('.')[1] : '';

    //整数部にカンマを付与
    var _num = Math.abs(_integerPart).toString().split(/(?=(?:\d{3})+$)/).join();

    //小数部を付与
    if (_decimals > 0) {
        var zeroStr = '';
        for (var i = 0; i < _decimals; i ++) zeroStr += '0';
        _num += '.' + (zeroStr + _decimalPart).slice(-_decimals);
    }

    //負の記号を付与して返却
    return (num < 0) ? ('-' + _num) : _num;
}
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3