currency.js是一款 js处理货币格式格式插件。currency.js提供非常灵活的api来帮助您解决javascript中的浮点数问题,并提供格式化货币数值功能,使用起来非常方便。

currency.js使用Es6语法编写,只有支持Es6语法的浏览器才能正常使用该插件。

使用方法

在页面中引入的currency.js文件。

<script src="js/currency.js"></script>            
                
基本使用

currency.js可以接收数值,字符串或货币对象作为参数值。

currency(123);      // 123.00
currency(1.23);     // 1.23
currency("1.23")    // 1.23
currency("$12.30")  // 12.30

var value = currency("123.45");
currency(value);    // 123.45 
                

currency.js提供一组数学运算方法来帮助您进行浮点数计算。

currency(123.50).add(0.23);       // 123.73
currency(5.00).subtract(0.50);    // 4.50
currency(45.25).multiply(3);      // 135.75
currency(1.12).distribute(5);     // [0.23, 0.23, 0.22, 0.22, 0.22] 
                

currency.js内置了格式化功能,能正确的显示逗号和圆点分隔符。

currency("2,573,693.75").add("100,275.50").format();  // "2,673,969.25"
currency("1,237.72").subtract(300).format();          // "937.72"
                

你也可以自定义自己的货币数值格式。

var euro = value => currency(value, { separator: ".", decimal: "," });
euro("2.573.693,75").add("100.275,50").format();  // "2.673.969,25"
euro("1.237,72").subtract(300).format();          // "937,72" 
                

配置参数

currency.js可用的配置参数有:

  • symbol:货币的符号,默认值为$
    currency(1.23, { formatWithSymbol: true }).format(); // => "$1.23"
    
  • symbol:是否在调用currency.format()方法时使用逗号分隔符,默认为,
    currency(1234.56, { symbol: ',' }).format(); // => "1,234.56"
    currency(1234.56, { symbol: ' ' }).format(); // => "1 234.56"
    
  • decimal
    currency(1.23, { decimal: '.' }).format(); // => "1.23"
    currency(1.23, { decimal: ',' }).format(); // => "1,23"
    
  • precision:保留小数点的位数。默认保留2位。
    currency(1.234, { precision: 2 }); // => "1.23"
    currency(1.234, { precision: 3 }); // => "1.234"
    
  • formatWithSymbol:是否在调用currency.format()方法时使用货币符号。默认值为false
    currency(1.23, { formatWithSymbol: true }).format(); // => "$1.23"
    currency(1.23, { formatWithSymbol: false }).format(); // => "1.23"
    
  • errorOnInvalid:当传入nullundefined等不正确的值时,currency抛出异常。默认值为false
    currency(undefined, { errorOnInvalid: true }); // throws an error
    
  • increment:When implementing a currency that implements rounding, setting the increment value will allow you to set the closest increment to round the display value to.
    var currencyRounding = value => currency(value, { increment: .05 });
    currencyRounding(1.09); // => { intValue: 109, value: 1.09 }
    currencyRounding(1.09).format(); // => "1.10"
    currencyRounding(1.06); // => { intValue: 106, value: 1.06 }
    currencyRounding(1.06).format(); // => "1.05"
    
  • useVedic:使用印度编号系统来显示货币数值。默认值是false
    currency(1234567.89, { useVedic: true }).format(); // => "12,34,567.89"
    

方法

currency.js可用的方法有:

  • currency.add( value ):加法运算。
    currency(123.45).add(.01); // => "123.46"
    
  • currency.subtract( value ):减法运算。
    currency(123.45).subtract(.01); // => "123.44"
    
  • currency.multiply( number ):乘法运算。
    currency(123.45).multiply(2); // => "246.90"
    
  • currency.divide( number ):除法运算。
    currency(123.45).divide(2); // => "61.73"
    
  • currency.distribute( number ):平均分配。
    currency(12.35).distribute(3); // => [4.12, 4.12, 4.11]
    currency(12.00).distribute(3); // => [4.00, 4.00, 4.00]
    
  • currency.format([ boolean ]):返回格式化后的货币格式。
    currency(1000.00).format(); // => "1,000.00"
    currency("1,234,567/90").add("200,000").format(); // => "1,434,567.89"
    

    上面是默认的格式,你可以通过下面的方法来自定义货币格式。

    var euro = value => currency(value, { separator: ' ', decimal: ',' });
    
    // ...
    
    euro(1000.00).format(); // => "1 000,00"
    euro(1234567.89).add("200 000").format(); // => "1 434 567,89"
    

    结合symbol参数,可以显示出带符号的货币格式。

    var money = value => currency(value, { formatWithSymbol: true });
    
    money(1000.00).format(); // => "$1,000.00"
    money(1000.00).format(false); // => "1,000.00"
    
  • currency.dollars:返回货币的dollar值。
    currency(123.45).dollars(); // => 123
    currency("0.99").dollars(); // => 0
    
  • currency.cents:返回货币的cent值。
    currency(123.45).cents(); // => 45
    currency("0.99").cents(); // => 99
    
  • 国际化(i18n)和格式:currency.js默认使用的是美国货币,你可以使用下面的方法来将货币格式本地化。
    const USD = value => currency(value);
    const RMB = value => currency(value, { precision: 0, symbol: '¥' });
    const EURO = value => currency(value, { symbol: '€', decimal: ',', separator: '.' });
    
    USD(1234.567).format(true); // => "$1,234.57"
    RMB(1234.567).format(true); // => "¥1,235"
    EURO(1234.567).format(true); // => "€1.234,57"
    

currency.js js处理货币格式格式插件的github地址为:https://github.com/scurker/currency.js