PHP's bcdiv in TypeScript

How to use

Install via yarn add locutus and import: import { bcdiv } from 'locutus/php/bc/bcdiv'.

Or with CommonJS: const { bcdiv } = require('locutus/php/bc/bcdiv')

Use a bundler that supports tree-shaking so you only ship the functions you actually use. Vite, webpack, Rollup, and Parcel all handle this. For server-side use this is less of a concern.

Examples

These examples are extracted from test cases that automatically verify our functions against their native counterparts.

#codeexpected result
1bcdiv('1', '2')'0'
2bcdiv('1', '2', 2)'0.50'
3bcdiv('-1', '5', 4)'-0.2000'
4bcdiv('8728932001983192837219398127471', '1928372132132819737213', 2)'4526580661.75'

Dependencies

This function uses the following Locutus functions:

  • _bc (php/_helpers)

Here's what our current TypeScript equivalent to PHP's bcdiv looks like.

import { _bc } from '../_helpers/_bc.ts'

export function bcdiv(leftOperand: string | number, rightOperand: string | number, scale?: number): string {
// 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 = _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()
}

Improve this function

Locutus is a community effort following The McDonald's Theory: we ship first iterations, hoping others will improve them. If you see something that could be better, we'd love your contribution.

View on GitHub · Edit on GitHub · View Raw


« More PHP bc functions


Star