diff artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculator.java @ 9382:8ae7137b67d7

Fixed: avoiding NaN exception in BigDecimal rounding
author mschaefer
date Tue, 07 Aug 2018 14:06:49 +0200
parents a0a2e68a1e11
children 439699ff9b2d
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculator.java	Tue Aug 07 12:43:53 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculator.java	Tue Aug 07 14:06:49 2018 +0200
@@ -183,6 +183,8 @@
      * Calculates the salix value
      */
     private double calcSalix(final double mhw, final double mw) {
+        if (Double.isNaN(mw) || Double.isInfinite(mw) || Double.isNaN(mhw) || Double.isInfinite(mhw))
+            return mw; // preserving NaN or Infinity
         return Formatter.roundW(mhw).subtract(SALIX_DISTANCE).subtract(Formatter.roundW(mw)).doubleValue();
     }
 
@@ -190,6 +192,8 @@
      * Calculates the inverse MW-MNW difference
      */
     private double calcMwmnw(final double mw, final double mnw) {
+        if (Double.isNaN(mw) || Double.isInfinite(mw) || Double.isNaN(mnw) || Double.isInfinite(mnw))
+            return mnw - mw; // preserving NaN or Inifinity
         return Formatter.roundW(mnw).subtract(Formatter.roundW(mw)).doubleValue();
     }
 

http://dive4elements.wald.intevation.org