View Javadoc

1   /* Open Log Viewer
2    *
3    * Copyright 2011
4    *
5    * This file is part of the OpenLogViewer project.
6    *
7    * OpenLogViewer software is free software: you can redistribute it and/or modify
8    * it under the terms of the GNU General Public License as published by
9    * the Free Software Foundation, either version 3 of the License, or
10   * (at your option) any later version.
11   *
12   * OpenLogViewer software is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   * GNU General Public License for more details.
16   *
17   * You should have received a copy of the GNU General Public License
18   * along with any OpenLogViewer software.  If not, see http://www.gnu.org/licenses/
19   *
20   * I ask that if you make any changes to this file you fork the code on github.com!
21   *
22   */
23  package org.diyefi.openlogviewer.utils;
24  
25  /**
26   * Math is used to provide math functions specific to the project.
27   * @author Ben Fenner
28   */
29  public final class MathUtils {
30  
31  	private MathUtils() {
32  	}
33  
34  	public static double roundToSignificantFigures(final double input, final int sigFigs) {
35  		double absoluteInput = 0;
36  		if (input == 0) {
37  			return 0;
38  		} else if (input < 0) {
39  			absoluteInput = -input;
40  		} else {
41  			absoluteInput = input;
42  		}
43  
44  		final double d = Math.ceil(Math.log10(absoluteInput));
45  		final int power = sigFigs - (int) d;
46  
47  		final double magnitude = Math.pow(10, power);
48  		final long shifted = Math.round(input * magnitude);
49  
50  		return shifted / magnitude;
51  	}
52  }