Java Decimal Format toDouble(String text)

Here you can find the source of toDouble(String text)

Description

Convertesc un string in Double

License

Open Source License

Parameter

Parameter Description
text a parameter

Declaration

public static Double toDouble(String text) 

Method Source Code

//package com.java2s;
/*/*from   www .j  av a2s . com*/
 *
 * This file is part of Genome Artist.
 *
 * Genome Artist is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Genome Artist is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Genome Artist.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.text.ParsePosition;
import java.util.Locale;

public class Main {
    public static final Locale LOCALE_RO = new Locale("ro", "RO");
    private static final String BASE_FORMATER_PATTERN = "##,##0";
    /**
     * Simbolurile asociate formaterului
     */
    private static DecimalFormatSymbols decimalFormatSymbols = null;
    /**
     * Formatez un numar la defaultul local
     * @param bigDecimal
     * @param scale
     * @return
     */
    private static DecimalFormat decimalFormater = null;
    private static int formaterScale = 0;

    /**
     * Convertesc un string in Double
     * @param text
     * @return
     */
    public static Double toDouble(String text) {
        if (isValidNumber(text)) {
            ParsePosition p = new ParsePosition(0);
            Number number = getDecimalFormatter(formaterScale).parse(text, p);

            //Intorc un bigdecimal
            return new Double(number.doubleValue());
        } else
            return null;
    }

    /**
     * Verifica daca un string este numar sau nu
     * @param text
     * @return
     */
    public static boolean isValidNumber(String text) {
        ParsePosition p = new ParsePosition(0);
        try {
            getDecimalFormatter(formaterScale).parse(text, p);
            if (text.length() != p.getIndex() || p.getErrorIndex() != -1) {
                return false;
            }
        } catch (NumberFormatException nfe) {
            return false;
        }
        return true;
    }

    /**
     * Obtin un formatter pentru o anumita scara
     * @param scale
     * @return
     */
    public static NumberFormat getDecimalFormatter(int scale) {
        if (scale != formaterScale)
            initializeDecimalFormat(scale);
        return decimalFormater;
    }

    /**
     * Initializez number formaterul
     * @param scale
     */
    private static void initializeDecimalFormat(int scale) {
        //Verific initializarea simbolurilor
        if (decimalFormatSymbols == null)
            initializeFormatSymbols();

        //Initializez formaterul
        if (formaterScale != scale) {
            String decimals = "";
            if (scale > 0)
                decimals = ".";
            for (int i = 0; i < scale; i++) {
                decimals += "0";
            }

            //Initializez formaterul
            decimalFormater = new DecimalFormat(BASE_FORMATER_PATTERN + decimals, decimalFormatSymbols);
        }
    }

    /**
     * Initializez simbolurile
     */
    private static void initializeFormatSymbols() {
        decimalFormatSymbols = new DecimalFormatSymbols(LOCALE_RO);
        decimalFormatSymbols.setDecimalSeparator('.');
        decimalFormatSymbols.setGroupingSeparator(',');
        decimalFormatSymbols.setMinusSign('-');
    }
}

Related

  1. strParaDouble(String s, double valorPadrao)
  2. to3DP(double number)
  3. toDecimalFromSexagesimalDegrees( final double sexagesimal)
  4. toDecimals(double d, int nrDecs)
  5. toDouble(Object obj, String pattern)
  6. toDoubleObject(Object o)
  7. toDoubOriginOutPut(double d, int digitally)
  8. toEdmDouble(double value)
  9. toFix(double x, int dp)