Functional Weave
Code in Rust

math.round-div@1.0.0

vectors.json

1,806 bytes · view raw

[
  {
    "name": "exact division",
    "args": [
      100,
      4,
      "half-up"
    ],
    "expect": 25
  },
  {
    "name": "half rounds away from zero",
    "args": [
      7,
      2,
      "half-up"
    ],
    "expect": 4
  },
  {
    "name": "negative half rounds away from zero",
    "args": [
      -7,
      2,
      "half-up"
    ],
    "expect": -4
  },
  {
    "name": "below half rounds down",
    "args": [
      7,
      3,
      "half-up"
    ],
    "expect": 2
  },
  {
    "name": "banker's rounding keeps 2 even",
    "args": [
      5,
      2,
      "half-even"
    ],
    "expect": 2
  },
  {
    "name": "banker's rounding keeps 4 even",
    "args": [
      7,
      2,
      "half-even"
    ],
    "expect": 4
  },
  {
    "name": "banker's rounding away from an odd quotient",
    "args": [
      11,
      2,
      "half-even"
    ],
    "expect": 6
  },
  {
    "name": "down truncates toward zero",
    "args": [
      199,
      100,
      "down"
    ],
    "expect": 1
  },
  {
    "name": "down truncates negatives toward zero",
    "args": [
      -199,
      100,
      "down"
    ],
    "expect": -1
  },
  {
    "name": "up rounds away from zero on any remainder",
    "args": [
      101,
      100,
      "up"
    ],
    "expect": 2
  },
  {
    "name": "negative divisor keeps the sign rule",
    "args": [
      7,
      -2,
      "half-up"
    ],
    "expect": -4
  },
  {
    "name": "zero numerator",
    "args": [
      0,
      7,
      "half-up"
    ],
    "expect": 0
  },
  {
    "name": "20 percent of 199 pence",
    "args": [
      3980,
      100,
      "half-up"
    ],
    "expect": 40
  },
  {
    "name": "divide by zero is an error",
    "args": [
      1,
      0,
      "half-up"
    ],
    "expectError": "denominator must not be zero"
  }
]