typescriptで、桁数を指定して四捨五入する関数を実装したので載せます。

ソースコード

NumberUtil.ts
  /**
   * 任意の桁で四捨五入する
   * @param value 四捨五入する数値
   * @param base どの桁で四捨五入するか
   *  1: 1の位で四捨五入
   *  10: 10の位で四捨五入
   *  0.1: 小数第1位で四捨五入
   *  0.01: 小数第2位で四捨五入
   * @return 四捨五入した値
   */
export function orgRound(value: number, base: number): number {
  if (base < 1) {
    const digit = String(1 / base).length - 1
    return Math.round(value * Math.pow(10, digit)) / Math.pow(10, digit)
  }

  return Math.round(value / base) * base
}

テストコード

NumberUtil.test.ts
/**
 * 四捨五入のテスト
 */
describe('orgRound', () => {
  test('100の位', () => {
    const base = 100
    expect(orgRound(123.0, base)).toBe(100)
    expect(orgRound(144.45, base)).toBe(100)
    expect(orgRound(155.5, base)).toBe(200)
    expect(orgRound(189.9, base)).toBe(200)
  })
  test('10の位', () => {
    const base = 10
    expect(orgRound(123.0, base)).toBe(120)
    expect(orgRound(124.45, base)).toBe(120)
    expect(orgRound(125.5, base)).toBe(130)
    expect(orgRound(129.9, base)).toBe(130)
  })

  test('1の位', () => {
    const base = 1
    expect(orgRound(123.0, base)).toBe(123)
    expect(orgRound(123.45, base)).toBe(123)
    expect(orgRound(123.5, base)).toBe(124)
    expect(orgRound(123.9, base)).toBe(124)
  })

  test('小数点第1位', () => {
    const base = 0.1
    expect(orgRound(123.45, base)).toBe(123.5)
  })

  test('小数点第2位', () => {
    const base = 0.01
    expect(orgRound(123.451, base)).toBe(123.45)
    expect(orgRound(123.452, base)).toBe(123.45)
    expect(orgRound(123.455, base)).toBe(123.46)
    expect(orgRound(123.457, base)).toBe(123.46)
  })

  test('小数点第3位', () => {
    const base = 0.001
    expect(orgRound(123.1111, base)).toBe(123.111)
    expect(orgRound(123.1114, base)).toBe(123.111)
    expect(orgRound(123.1115, base)).toBe(123.112)
    expect(orgRound(123.1119, base)).toBe(123.112)
  })
})

参考