Java Double to String doubleToString(double d, int fNumber)

Here you can find the source of doubleToString(double d, int fNumber)

Description

Converts the double value to locale-independent string representation.

License

Open Source License

Parameter

Parameter Description
d the double value to convert
fNumber the positive maximum fractional number

Return

the locale-independent string representation.

Declaration


public static String doubleToString(double d, int fNumber) 

Method Source Code

//package com.java2s;
/*******************************************************************************
 * Copyright (c) 2004 Actuate Corporation.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors://  w w w .j a va 2 s  .  com
 *  Actuate Corporation  - initial API and implementation
 *******************************************************************************/

public class Main {
    /**
     * Converts the double value to locale-independent string representation.
     * This method works like <code>Double.toString( double )</code>, and can
     * also handle very large number like 1.234567890E16 to "12345678900000000".
     * 
     * @param d
     *            the double value to convert
     * @param fNumber
     *            the positive maximum fractional number
     * @return the locale-independent string representation.
     */

    public static String doubleToString(double d, int fNumber) {

        if (fNumber < 0)
            fNumber = 0;

        String value = Double.toString(d);
        int ePos = value.indexOf('E');
        int dotPos = value.indexOf('.');

        // Convert the double like "1234567890000000.56789" to string, which
        // will be converted to
        // "1.23456789000E15" by Double.toString().

        if (ePos != -1) {
            // Get the exponent of this double

            String e = value.substring(ePos + 1);
            int exp = Integer.parseInt(e);

            // Move the dot position according to the exponent

            StringBuffer sb = new StringBuffer(value.substring(0, dotPos));
            if (ePos - dotPos - 1 > exp) {
                // "1.23456789000E4"

                sb.append(value.substring(dotPos + 1, dotPos + 1 + exp));
                sb.append('.');
                sb.append(value.substring(dotPos + 1 + exp, ePos));

                // "12345.6789000"
            } else {
                // "1.23400E8"

                sb.append(value.substring(dotPos + 1, ePos));
                for (int i = 0; i < exp - (ePos - dotPos - 1); i++)
                    sb.append('0');

                // "123400000"
            }

            // "1234567890000000" will be the final one

            value = sb.toString();
        }

        // Limit the fractional number to maximum fractional number

        int pos = value.indexOf('.');
        if (pos != -1) {
            if (value.length() - pos - 1 > fNumber)
                value = value.substring(0, pos + fNumber + 1);

            // Remove the ending '0'.

            int i = 0;
            for (; i < fNumber; i++) {
                if (value.charAt(value.length() - i - 1) != '0')
                    break;
            }
            value = value.substring(0, value.length() - i);

            // Remove the last dot

            if (value.charAt(value.length() - 1) == '.')
                value = value.substring(0, value.length() - 1);
        }

        return value;
    }
}

Related

  1. doubleToStr(Double d)
  2. doubleToStr(Double valor)
  3. doubleToString(double d)
  4. doubleToString(double d)
  5. doubleToString(double d)
  6. doubleToString(double d, int sigDigs)
  7. doubleToString(Double doub)
  8. doubleToString(double inValue, int precision, boolean useComma)
  9. doubleToString(double val)