From 00e41fdc4ab31f711180c7aa7532a3eda964ccdb Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Fri, 19 Jan 2018 11:12:32 +0100 Subject: [PATCH] [Minor] round to 8 decimals in FloatParameter and FloatValue --- .../model/parameter/FloatParameter.java | 12 ++--- .../model/timevalue/impl/FloatValue.java | 9 ++-- .../li/strolch/utils/helper/MathHelper.java | 46 +++++++++---------- 3 files changed, 34 insertions(+), 33 deletions(-) diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/FloatParameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/FloatParameter.java index bf9279003..0fbc73569 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/FloatParameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/FloatParameter.java @@ -1,12 +1,12 @@ /* * Copyright 2013 Robert von Burg - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -18,10 +18,10 @@ package li.strolch.model.parameter; import li.strolch.model.StrolchValueType; import li.strolch.model.visitor.ParameterVisitor; import li.strolch.utils.dbc.DBC; +import li.strolch.utils.helper.MathHelper; /** * @author Robert von Burg - * */ public class FloatParameter extends AbstractParameter { @@ -63,12 +63,12 @@ public class FloatParameter extends AbstractParameter { @Override public void setValue(Double value) { validateValue(value); - this.value = value; + this.value = MathHelper.toPrecision(value, 8); } /** * Sets the value to 0 - * + * * @see Parameter#clear() */ @Override diff --git a/li.strolch.model/src/main/java/li/strolch/model/timevalue/impl/FloatValue.java b/li.strolch.model/src/main/java/li/strolch/model/timevalue/impl/FloatValue.java index e1c059d4e..4c79f6742 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/timevalue/impl/FloatValue.java +++ b/li.strolch.model/src/main/java/li/strolch/model/timevalue/impl/FloatValue.java @@ -1,12 +1,12 @@ /* * Copyright 2013 Martin Smock - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -20,6 +20,7 @@ import java.io.Serializable; import li.strolch.model.StrolchValueType; import li.strolch.model.timevalue.ITimeValue; import li.strolch.model.timevalue.IValue; +import li.strolch.utils.helper.MathHelper; /** * {@link IValue} implementation to work with Double valued {@link ITimeValue} objects @@ -61,7 +62,7 @@ public class FloatValue implements IValue, Serializable { @Override public FloatValue add(Double o) { - this.value += o; + this.value = MathHelper.toPrecision(this.value + o, 8); return this; } diff --git a/li.strolch.utils/src/main/java/li/strolch/utils/helper/MathHelper.java b/li.strolch.utils/src/main/java/li/strolch/utils/helper/MathHelper.java index 732fe1fed..4902f42c7 100644 --- a/li.strolch.utils/src/main/java/li/strolch/utils/helper/MathHelper.java +++ b/li.strolch.utils/src/main/java/li/strolch/utils/helper/MathHelper.java @@ -1,12 +1,12 @@ /* * Copyright 2013 Martin Smock - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -20,7 +20,7 @@ import java.math.RoundingMode; /** * A helper class that contains mathematical computations that can be used throughout. - * + * * @author Martin Smock <smock.martin@gmail.com> * @author Michael Gatto <michael@gatto.ch> */ @@ -31,15 +31,15 @@ public class MathHelper { /** * Check if the two values are equal with respect to the precision - * + * * @param firstValue - * the first value to compare + * the first value to compare * @param secondValue - * the second value to compare to + * the second value to compare to + * * @return boolean True, if the two values are equal under the set precision. Fales, otherwise. */ public static boolean isEqualPrecision(double firstValue, double secondValue) { - return (java.lang.Math.abs(firstValue - secondValue) < (1.0d / PRECISION)); } @@ -49,17 +49,16 @@ public class MathHelper { *

* Note: this implementation tests if the value < bound, and if this is not so, checks if the values are equal under * the precision. Thus, it's efficient whenever the value is expected to be smaller than the bound. - * + * * @param value - * The value to check + * The value to check * @param bound - * The bound given + * The bound given + * * @return true, if value < bound under the given precision. False, otherwise. */ public static boolean isSmallerEqualPrecision(double value, double bound) { - if (value < bound) - return true; - return isEqualPrecision(value, bound); + return value < bound || isEqualPrecision(value, bound); } /** @@ -68,11 +67,12 @@ public class MathHelper { *

* Note: This implementation tests if value > bound and, if it is so, if equality does NOT hold. Thus, it is * efficient whenever the value is not expected to be greater than the bound. - * + * * @param value - * The value to check + * The value to check * @param bound - * The bound given. + * The bound given. + * * @return true, if value > bound and the values do not test equal under precision. False, otherwise. */ public static boolean isGreaterPrecision(double value, double bound) { @@ -83,7 +83,7 @@ public class MathHelper { *

* Rounds the given double value to the number of decimals *

- * + * *

* Warning: Do not use the returned value for further calculations. Always finish calculates and use one of * the following methods: @@ -94,12 +94,12 @@ public class MathHelper { * * to test on equality or greater than/ smaller than *

- * + * * @param value - * the double value to round + * the double value to round * @param decimals - * number of decimals - * + * number of decimals + * * @return the rounded number */ public static double toPrecision(double value, int decimals) { @@ -116,7 +116,7 @@ public class MathHelper { /** * Returns the value with the precision where precision is set to {@link #PRECISION_DIGITS} - * + * * @see #toPrecision(double, int) */ public static double toPrecision(double value) {