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 }