### Question:
BucketFunctions { public static LongFunction<String> decimal(long max) { ValueFormatter f = getFormatter(DECIMAL_FORMATTERS, max); return biasZero("negative", "large", max, f); } private  BucketFunctions(); static LongFunction<String> age(long max, TimeUnit unit); static LongFunction<String> latency(long max, TimeUnit unit); static LongFunction<String> ageBiasOld(long max, TimeUnit unit); static LongFunction<String> latencyBiasSlow(long max, TimeUnit unit); static LongFunction<String> bytes(long max); static LongFunction<String> decimal(long max);  }### Answer:
@Test public void decimal20K() { LongFunction<String> f = BucketFunctions.decimal(20000); Assertions.assertEquals("negative", f.apply(-1L)); Assertions.assertEquals("02_k", f.apply(761)); Assertions.assertEquals("05_k", f.apply(4567)); Assertions.assertEquals("20_k", f.apply(15761)); Assertions.assertEquals("large", f.apply(20001)); }
@Test public void decimal2M() { LongFunction<String> f = BucketFunctions.decimal(2_000_000); Assertions.assertEquals("negative", f.apply(-1L)); Assertions.assertEquals("0250_k", f.apply(761)); Assertions.assertEquals("0500_k", f.apply(456_000)); Assertions.assertEquals("1000_k", f.apply(576_100)); Assertions.assertEquals("large", f.apply(2_000_001)); }
@Test public void decimalMaxValue() { LongFunction<String> f = BucketFunctions.decimal(Long.MAX_VALUE); Assertions.assertEquals("negative", f.apply(-1L)); Assertions.assertEquals("1_E", f.apply(761)); Assertions.assertEquals("2_E", f.apply(Long.MAX_VALUE / 4)); Assertions.assertEquals("4_E", f.apply(Long.MAX_VALUE / 2)); Assertions.assertEquals("9_E", f.apply(Long.MAX_VALUE)); }