Как удалить «0» в дроби в Java? - PullRequest
1 голос
/ 05 мая 2019

У меня есть значение с плавающей точкой текущего веса, например, "79,3" килограмма.Я разделил значение с плавающей запятой на килограмм и значение в граммах.

Я получаю правильное количество килограммов при разборе значения с плавающей запятой на int.Тогда я получаю дробную часть значения с плавающей запятой.Эта дробная часть выглядит как «0,3», что означает 0,3 килограмма или 300 граммов.В моей Программе я могу иметь только 0,100,200, ..., 900 граммов, что будет означать 0-9.Моя цель состоит в том, чтобы удалить «0», поэтому я получаю только значение «3».

Это мой код на данный момент, и я тоже попробовал некоторое десятичное форматирование, но я не знал, как это сделатьэто:

public void setCurrentWeightInTheNumberPickers() {
    float currentWeightAsFloat = weight_dbHandler.getCurrentWeightFloat();
    int currentWeightKilograms = (int) currentWeightAsFloat;
    double fractionOfGrams = currentWeightAsFloat % 1;
    DecimalFormat df1 = new DecimalFormat("0.##");
    String rounded = df1.format(fractionOfGrams);
    rounded.replaceFirst("^0+(?!$)", "");

} //public void setCurrentWeightInTheNumberPickers()

Ответы [ 3 ]

2 голосов
/ 05 мая 2019

Для заданной строки

String gram = "0,3";

вы можете просто сделать:

gram = gram.substring(gram.lastIndexOf(",") + 1);

, которая при печати выдает следующий вывод

3

1 голос
/ 05 мая 2019

Или вы можете просто сделать это.Нет необходимости в строках.

float f = 3.3f;
int g = (int)f;
int h = Math.round((f - g)*10);

, и поскольку h предполагается в граммах, вы могли бы также сделать его *1000* 1004 *

1 голос
/ 05 мая 2019

Я рассматриваю это прежде всего как математическую, а не Java-проблему.Учитывая входные данные в единицах килограммов, чтобы получить только компонент килограмма, мы можем взять слово.Чтобы получить граммовый компонент, мы можем умножить на 1000, а затем взять мод 1000.

double input = 79.321;
double kg = Math.floor(input);
System.out.println("kilograms: " + kg);
double g = Math.floor((1000*input) % 1000);
System.out.println("grams: " + g);

kilograms: 79.0
grams: 321.0

Примечание: я использую double здесь вместо float, только потому, что Math.floor возвращает double как возвращаемое значение.

...