Here you can find the source of doubleToString(double d, int fNumber)
Parameter | Description |
---|---|
d | the double value to convert |
fNumber | the positive maximum fractional number |
public static String doubleToString(double d, int fNumber)
//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; } }