Hyperlinkv0.8.0-beta.28

Number

Number.remainderconsteffect/Number.ts:646
(divisor: number): (self: number) => number
(self: number, divisor: number): number

Returns the remainder left over when one operand is divided by a second operand, always taking the sign of the dividend.

When to use

Use to compute a numeric remainder while preserving decimal precision better than direct JavaScript % for decimal operands.

Example (Calculating remainders)

import { Number } from "effect"
import * as assert from "node:assert"

assert.deepStrictEqual(Number.remainder(2, 2), 0)
assert.deepStrictEqual(Number.remainder(3, 2), 1)
assert.deepStrictEqual(Number.remainder(-4, 2), -0)
mathdivide
Source effect/Number.ts:64619 lines
export const remainder: {
  (divisor: number): (self: number) => number
  (self: number, divisor: number): number
} = dual(2, (self: number, divisor: number): number => {
  const selfString = self.toString()
  const divisorString = divisor.toString()
  if (selfString.includes("e") || divisorString.includes("e")) {
    if (!globalThis.Number.isFinite(self) || !globalThis.Number.isFinite(divisor) || divisor === 0) {
      return NaN
    }
    return remainderWithScientificNotation(self, divisor)
  }
  const selfDecCount = (selfString.split(".")[1] || "").length
  const divisorDecCount = (divisorString.split(".")[1] || "").length
  const decCount = selfDecCount > divisorDecCount ? selfDecCount : divisorDecCount
  const selfInt = parseInt(self.toFixed(decCount).replace(".", ""))
  const divisorInt = parseInt(divisor.toFixed(decCount).replace(".", ""))
  return (selfInt % divisorInt) / Math.pow(10, decCount)
})
Referenced by 1 symbols