Отличный вопрос. Вот пример. Вы можете использовать объект DecimalFormat.
import java.text.DecimalFormat;
import java.math.RoundingMode;
import java.util.*;
public class HelloWorld {
public static void main(String []args) {
DecimalFormat df = new DecimalFormat("##.#");
df.setRoundingMode(RoundingMode.DOWN);
float number = 6.334213f;
float fixedNumber = Float.parseFloat(df.format(number));
System.out.println(number);
System.out.println(fixedNumber);
}
}
Сначала вы создаете объект DecimalFormat и определяете формат, а также режим округления. Затем вы можете использовать функцию format
для ее преобразования. Однако эта функция возвращает объект StringBuffer (см. Здесь здесь ), поэтому, чтобы снова сохранить его в float, нам нужно преобразовать его обратно в float с помощью Float.parseFloat()
.
ОБНОВЛЕНИЕ: (лучше)
Это, вероятно, более эффективный способ сделать это ... умножить число на его основание (потому что это десятичное (обычное) число, основание равно 10), увеличивая до количества цифр после десятичной точки, которое вы хотите держать.
Итак, в приведенном ниже примере мы хотим обрезать все, кроме 1 значащей цифры справа от «.», Поэтому мы умножаем на десять до 1 (то есть всего 10), используя функцию Math.floor()
, чтобы удалите десятичную дробь, а затем снова разделите на то же число, на которое вы умножили.
public class HelloWorld {
public static void main(String []args) {
double number = 6.334213d;
double fixedNumber = Math.floor(number * 10.0) / 10.0;
System.out.println(fixedNumber); // 6.3
number = 6.334213d;
fixedNumber = Math.floor(number * 1000.0) / 1000.0;
System.out.println(fixedNumber); // 6.334
}
}
Если мы хотим сохранить 3 цифры после «.», Умножьте на 10 ^ 3 (что составляет 1000), а затем разделите на то же число.