Java examples for java.lang:String End
Converts the double value to locale-independent string representation.
/******************************************************************************* * 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://from w ww. ja v a 2 s .co m * Actuate Corporation - initial API and implementation **** //package com.java2s; public class Main { public static void main(String[] argv) { double d = 42.45678; int fNumber = 42; System.out.println(doubleToString(d, fNumber)); } /** * 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; } }