### Question:
DiscreteNormalizer implements Normalizer { @Override public double denormalize(double value) { return normalizer.denormalize(value); } DiscreteNormalizer(double min, double max, int steps);  DiscreteNormalizer(double min, double max, int steps, @Nullable Normalizer normalizer);  DiscreteNormalizer(double min, double max, double step); @Override double normalize(double value); @Override double denormalize(double value);  }### Answer:
@Test public void testDenormalize() throws Exception { DiscreteNormalizer dn = new DiscreteNormalizer(0, 10, 1d); Assert.assertTrue(Maths.equals(0, dn.normalize(dn.denormalize(0)), 2)); Assert.assertTrue(Maths.equals(0.1, dn.normalize(dn.denormalize(0.1)), 2)); Assert.assertTrue(Maths.equals(1, dn.normalize(dn.denormalize(1)), 2)); Assert.assertTrue(Maths.equals(0.9, dn.normalize(dn.denormalize(0.9)), 2)); }