Java - Формат номера для печати только десятичной части - PullRequest
7 голосов
/ 07 апреля 2011

Есть ли в Java простой способ форматирования десятичной дроби, числа с плавающей запятой, двойных чисел и т. Д., Чтобы ТОЛЬКО печатать десятичную часть числа?Мне не нужна целочисленная часть, даже если она равна нулю!В настоящее время я использую метод String.indexOf (".") В сочетании с методом String.substring (), чтобы выделить часть числа с правой стороны десятичной дроби.Есть ли более чистый способ сделать это?Не удалось найти ничего в классе DecimalFormat или в методе printf.Оба всегда возвращают ноль перед запятой.

Ответы [ 3 ]

7 голосов
/ 07 апреля 2011

Вы можете удалить целочисленную часть значения, приведя значение double к длинному.Затем вы можете вычесть это из исходного значения, оставив только дробное значение:

double val = 3.5;
long intPartVal= (long) val;
double fracPartVal = val - intPartVal;
System.out.println(fracPartVal);

И если вы хотите избавиться от ведущего нуля, вы можете сделать это:

System.out.println(("" + fracPartVal).substring(1));
5 голосов
/ 07 апреля 2011

Разделите на 1 и получите остаток, чтобы получить десятичную часть (используя «%»).Используйте DecimalFormat для форматирования результата (используя символ «#» для подавления начальных 0):

double d1 = 67.22;
double d2 = d1%1;
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(d2));

это печатает .22

0 голосов
/ 12 ноября 2015

Будет напечатано 0,3

double x = 23.8;
int y =(int)x;
float z= (float) (x % y);
System.out.println(z);
...