npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

big-round

v2.0.0

Published

Custom rounding behaviour for BigInt arithmetic

Readme

big-round

Ordinarily, JavaScript BigInt division rounds towards 0. big-round provides alternative methods for dividing BigInts with different rounding behaviour.

import { Divide, ROUNDING_MODE } from 'big-round'

const divide = Divide(ROUNDING_MODE.DIRECTED_AWAY_FROM_ZERO)

divide(25n, 10n) // 3n

API

Divide(roundingMode)

roundingMode must be one of the enumerated values provided by ROUNDING_MODE (q.v.). Returns a new function divide(a, b), where a must be a BigInt, the dividend. b must be a BigInt, the divisor. The return value from divide is the quotient, a BigInt, rounded to the nearest integer using the provided rounding mode.

ROUNDING_MODE

This object contains the following enumerated values. More detailed information about these modes of integer rounding can be found on Wikipedia.

THROW

If b does not divide a, instead of attempting rounding, throw an exception.

DIRECTED_TOWARDS_ZERO

Always round fractions "down", towards zero. Note that this is the default rounding mode in JavaScript BigInt division. big-round provides it for completeness, but you can do a / b to get an identical result.

DIRECTED_AWAY_FROM_ZERO

Always round fractions "up", away from zero.

DIRECTED_TOWARDS_NEGATIVE_INFINITY

Always round fractions towards negative infinity. Equivalent to applying the floor function.

DIRECTED_TOWARDS_POSITIVE_INFINITY

Always round fractions towards positive infinity. Equivalent to applying the ceiling function.

STOCHASTIC

Round all fractions up or down randomly with probability proportional to proximity. E.g. a quotient of 1.7 is rounded down to 1n with probability .3 and up to 2n with probability .7.

NEAREST_HALF_THROW

Round fractions to the nearest integer. If the fraction is exactly .5, instead of attempting rounding, throw an exception.

NEAREST_HALF_TOWARDS_ZERO

Round fractions to the nearest integer. If the fraction is exactly .5, round "down", towards zero.

NEAREST_HALF_AWAY_FROM_ZERO

Round fractions to the nearest integer. If the fraction is exactly .5, round "up", away from zero.

NEAREST_HALF_TOWARDS_NEGATIVE_INFINITY

Round fractions to the nearest integer. If the fraction is exactly .5, round towards negative infinity.

NEAREST_HALF_TOWARDS_POSITIVE_INFINITY

Round fractions to the nearest integer. If the fraction is exactly .5, round towards positive infinity.

NEAREST_HALF_TO_EVEN

Round fractions to the nearest integer. If the fraction is exactly .5, round to even.

NEAREST_HALF_TO_ODD

Round fractions to the nearest integer. If the fraction is exactly .5, round to odd.

NEAREST_HALF_ALTERNATE

Round fractions to the nearest integer. If the fraction is exactly .5, round "up", away from zero, the first time this happens, then "down", towards zero, the second time, and continue to alternate in that fashion.

An internal counter on the divide function tracks the number of times that this function has been called and the fraction turned out to be exactly .5. If the fraction is not exactly .5, the counter does not advance.

NEAREST_HALF_RANDOM

Round fractions to the nearest integer. If the fraction is exactly .5, round up or down with probability .5.