Here you can find the source of calculateDeviation(BigDecimal v1, BigDecimal v2)
public static double calculateDeviation(BigDecimal v1, BigDecimal v2)
//package com.java2s; /*/* ww w. j a v a 2 s . co m*/ * Copyright (c) 2010-2012 Grid Dynamics Consulting Services, Inc, All Rights Reserved * http://www.griddynamics.com * * This library is free software; you can redistribute it and/or modify it under the terms of * the GNU Lesser General Public License as published by the Free Software Foundation; either * version 2.1 of the License, or any later version. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import java.math.BigDecimal; public class Main { public static double calculateDeviation(BigDecimal v1, BigDecimal v2) { if (v1 == null || v2 == null) { return 0; } double dv1 = v1.doubleValue(); double dv2 = v2.doubleValue(); return calculateDeviation(dv1, dv2); } public static double calculateDeviation(double dv1, double dv2) { double ratio; if (Double.compare(dv2, 0) == 0) { if (!(Double.compare(dv1, 0) == 0)) { ratio = Double.POSITIVE_INFINITY; } else { ratio = 1.0; } } else { ratio = Math.abs(dv1 / dv2); } if (Double.compare(ratio, 1.0) == 0) { return 0; } return ratio - 1; } }