StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
StackGenVis/frontend/node_modules/accounting-js/lib/formatMoney.js

67 lines
2.1 KiB

import objectAssign from 'object-assign';
import _checkCurrencyFormat from './internal/checkCurrencyFormat';
import settings from './settings';
import formatNumber from './formatNumber';
/**
* Format a number into currency
*
* Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)
* defaults: (0, '$', 2, ',', '.', '%s%v')
*
* Localise by overriding the symbol, precision, thousand / decimal separators and format
*
* ```js
* // Default usage:
* accounting.formatMoney(12345678); // $12,345,678.00
*
* // European formatting (custom symbol and separators), can also use options object as second parameter:
* accounting.formatMoney(4999.99, { symbol: "€", precision: 2, thousand: ".", decimal: "," }); // €4.999,99
*
* // Negative values can be formatted nicely:
* accounting.formatMoney(-500000, { symbol: "£ ", precision: 0 }); // £ -500,000
*
* // Simple `format` string allows control of symbol position (%v = value, %s = symbol):
* accounting.formatMoney(5318008, { symbol: "GBP", format: "%v %s" }); // 5,318,008.00 GBP
* ```
*
* @method formatMoney
* @for accounting
* @param {Number} number Number to be formatted.
* @param {Object} [opts={}] Object containing all the options of the method.
* @return {String} The given number properly formatted as money.
*/
function formatMoney(number, opts = {}) {
// Resursively format arrays:
if (Array.isArray(number)) {
return number.map((val) => formatMoney(val, opts));
}
// Build options object from second param (if object) or all params, extending defaults:
opts = objectAssign({},
settings,
opts
);
// Check format (returns object with pos, neg and zero):
const formats = _checkCurrencyFormat(opts.format);
// Choose which format to use for this value:
let useFormat;
if (number > 0) {
useFormat = formats.pos;
} else if (number < 0) {
useFormat = formats.neg;
} else {
useFormat = formats.zero;
}
// Return with currency symbol added:
return useFormat
.replace('%s', opts.symbol)
.replace('%v', formatNumber(Math.abs(number), opts));
}
export default formatMoney;