locutus
Version:
Locutus other languages' standard libraries to JavaScript for fun and educational purposes
32 lines (31 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.bcdiv = bcdiv;
const _bc_ts_1 = require("../_helpers/_bc.js");
function bcdiv(leftOperand, rightOperand, scale) {
// discuss at: https://locutus.io/php/bcdiv/
// original by: lmeyrick (https://sourceforge.net/projects/bcmath-js/)
// example 1: bcdiv('1', '2')
// returns 1: '0'
// example 2: bcdiv('1', '2', 2)
// returns 2: '0.50'
// example 3: bcdiv('-1', '5', 4)
// returns 3: '-0.2000'
// example 4: bcdiv('8728932001983192837219398127471', '1928372132132819737213', 2)
// returns 4: '4526580661.75'
const libbcmath = (0, _bc_ts_1._bc)();
if (typeof scale === 'undefined') {
scale = libbcmath.scale;
}
scale = scale < 0 ? 0 : scale;
const first = libbcmath.php_str2num(leftOperand.toString());
const second = libbcmath.php_str2num(rightOperand.toString());
const result = libbcmath.bc_divide(first, second, scale);
if (result === -1) {
throw new Error('(BC) Division by zero');
}
if (result.n_scale > scale) {
result.n_scale = scale;
}
return result.toString();
}