javascript: 数字格式化, 数字处理, formatting numbers, manipulating ,Numeral.js

 

项目地址:https://github.com/adamwdraper/Numeral-js

Use it

In the Browser

<script src="numeral.min.js"></script>

或者使用CDN文件

<script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/2.0.6/numeral.min.js"></script>

In Node.js

npm install numeral
var numeral = require('numeral');

创建

创建数字的实例。数字采用它转换为数字的数字或字符串。

var myNumeral = numeral(1000);

var value = myNumeral.value();
// 1000

var myNumeral2 = numeral('1,000');

var value2 = myNumeral2.value();
// 1000
Input Value
numeral(974) 974
numeral(0.12345) 0.12345
numeral(‘10,000.12’) 10000.12
numeral(’23.’) 23
numeral(‘$10,000.00’) 10000
numeral(‘100B’) 100
numeral(‘3.467TB’) 3467000000000
numeral(‘-76%’) -0.76
numeral(‘2:23:57’) NaN

格式

数字可以格式化为货币,百分比,时间,甚至是带有小数位,数千和缩写的普通旧数字。您始终可以创建自定义格式

var string = numeral(1000).format('0,0');
// '1,000'

数字

Number Format String
10000 ‘0,0.0000’ 10,000.0000
10000.23 ‘0,0’ 10,000
10000.23 ‘+0,0’ +10,000
-10000 ‘0,0.0’ -10,000.0
10000.1234 ‘0.000’ 10000.123
100.1234 ‘00000’ 00100
1000.1234 ‘000000,0’ 001,000
10 ‘000.00’ 010.00
10000.1234 ‘0[.]00000’ 10000.12340
-10000 ‘(0,0.0000)’ (10,000.0000)
-0.23 ‘.00’ -.23
-0.23 ‘(.00)’ (.23)
0.23 ‘0.00000’ 0.23000
0.23 ‘0.0[0000]’ 0.23
1230974 ‘0.0a’ 1.2百万
1460 ‘0 a’ 1 千
-104000 ‘0a’ -104千
1 ‘0o’ 1.
100 ‘0o’ 100.

货币

Number Format String
1000.234 ‘$0,0.00’ ¥1,000.23
1000.2 ‘0,0[.]00 $’ 1,000.20 ¥
1001 ‘$ 0,0[.]00’ ¥ 1,001
-1000.234 ‘($0,0)’ (¥1,000)
-1000.234 ‘$0.00’ -¥1000.23
1230974 ‘($ 0.00 a)’ ¥ 1.23 百万

字节

Number Format String
100 ‘0b’ 100B
1024 ‘0b’ 1KB
2048 ‘0 ib’ 2 KiB
3072 ‘0.0 b’ 3.1 KB
7884486213 ‘0.00b’ 7.88GB
3467479682787 ‘0.000 ib’ 3.154 TiB

百分比

Number Format String
1 ‘0%’ 100%
0.974878234 ‘0.000%’ 97.488%
-0.43 ‘0 %’ -43 %
0.43 ‘(0.000 %)’ 43.000 %

时间

Number Format String
25 ’00:00:00′ 0:00:25
238 ’00:00:00′ 0:03:58
63846 ’00:00:00′ 17:44:06

指数

Number Format String
1123456789 ‘0,0e+0’ 1e+9
12398734.202 ‘0.00e+0’ 1.24e+7
0.000123987 ‘0.000e+0’ 1.240e-4

功能

该值始终可用。

var number = numeral(1000);

var string = number.format('0,0');
// '1,000'

var value = number.value();
// 1000

操纵

并不是说你会经常使用它们,但是当你需要它们时它们就在那里。

var number = numeral(1000);

var added = number.add(10);
// 1010
Before Function After
1000 .add(100) 1100
1100 .subtract(100) 1000
1000 .multiply(100) 100000
100000 .divide(100) 1000

设置数字对象的值。

var number = numeral();

number.set(1000);

var value = number.value();
// 1000

区别

找出数字对象和值之间的差异

var number = numeral(1000),
    value = 100;

var difference = number.difference(value);
// 900

克隆

当你在它时,继续克隆任何数字对象。

var a = numeral(1000);
var b = numeral(a);
var c = a.clone();

var aVal = a.set(2000).value();
// 2000

var bVal = b.value();
// 1000

var cVal = c.add(10).value();
// 1010

 

设置

默认格式

设置默认格式,以便您可以使用不带字符串的.format()。默认格式为’0,0′

var number = numeral(1000);

number.format();
// '1,000'

numeral.defaultFormat('$0,0.00');

number.format();
// '$1,000.00'

自定义零和空格式

格式化数字值为0或null时设置自定义输出

var number = numeral(0);
var nullNumber = numeral(null);

numeral.zeroFormat('N/A');
numeral.nullFormat('N/A');

var zero = number.format('0.0')
// 'N/A'

var na = nullNumber.format('0.0')
// 'N/A'

语言环境

让我们到处都可以使用它!

// load a locale
numeral.register('locale', 'fr', {
    delimiters: {
        thousands: ' ',
        decimal: ','
    },
    abbreviations: {
        thousand: 'k',
        million: 'm',
        billion: 'b',
        trillion: 't'
    },
    ordinal : function (number) {
        return number === 1 ? 'er' : 'ème';
    },
    currency: {
        symbol: '€'
    }
});

// switch between locales
numeral.locale('fr');

由于我不熟悉地球上的每个地区,请随意通过提交拉取请求来创建您自己的语言环境文件。不要忘记创建语言环境文件(例如:locales / fr.js)和语言环境测试(例如:tests / locales / fr.js)。谢谢你的帮助。

格式

添加自己的自定义格式就像添加区域设置一样简单。

// load a format
numeral.register('format', 'percentage', {
    regexps: {
        format: /(%)/,
        unformat: /(%)/
    },
    format: function(value, format, roundingFunction) {
        var space = numeral._.includes(format, ' %') ? ' ' : '',
            output;

        value = value * 100;

        // check for space before %
        format = format.replace(/\s?\%/, '');

        output = numeral._.numberToFormat(value, format, roundingFunction);

        if (numeral._.includes(output, ')')) {
            output = output.split('');

            output.splice(-1, 0, space + '%');

            output = output.join('');
        } else {
            output = output + space + '%';
        }

        return output;
    },
    unformat: function(string) {
        return numeral._.stringToNumber(string) * 0.01;
    }
});

// use your custom format
numeral().format('0%');

 

致谢

Numeral.js虽然不那么复杂,却受到Moment.js的启发并大量借用。

 

本文:javascript: 数字格式化, 数字处理, formatting numbers, manipulating ,Numeral.js