Here you can find the source of truncate(double value, int precision)
public static double truncate(double value, int precision)
//package com.java2s; /*// w ww . j ava 2 s . co m * Copyright @ 2006-2010 by The Jxva Framework Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ public class Main { public static float truncate(float value, int precision) { return Float.parseFloat(Double.toString(truncate((double) value, precision))); } public static double truncate(double value, int precision) { String str = Double.toString(value); String precisionstr = str.substring(str.indexOf('.') + 1); if (precisionstr.length() <= precision) { return value; } else { long tmp = Math.round(value * Math.pow(10, precisionstr.length())); for (int i = 0; i < precisionstr.length() - precision - 1; i++) { tmp /= 10; } if (tmp % 10 >= 5) { tmp /= 10; tmp += 1; } else { tmp /= 10; } return ((double) tmp) / Math.pow(10, precision); } } }