如何删除;“0”;Java中的一小部分?

如何删除;“0”;Java中的一小部分?,java,string,replace,split,double,Java,String,Replace,Split,Double,我有一个当前重量的浮动值,例如“79.3”千克。 我把浮点数分成一公斤和一克 在将浮点值解析为int时,我得到了正确的千克数。 然后我得到浮点值的小数部分。这个分数部分看起来像“0,3”,意思是0.3公斤或300克。 在我的程序中,我只能有0100200,…,900克,代表0-9。 我的目标是删除“0”,所以我只得到“3”的值 这是我目前的代码,我也尝试了一些十进制格式,但我不知道如何操作: public void setCurrentWeightInTheNumberPickers() {

我有一个当前重量的浮动值,例如“79.3”千克。 我把浮点数分成一公斤和一克

在将浮点值解析为int时,我得到了正确的千克数。 然后我得到浮点值的小数部分。这个分数部分看起来像“0,3”,意思是0.3公斤或300克。 在我的程序中,我只能有0100200,…,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()
给一串

String gram = "0,3";
您只需执行以下操作:

gram = gram.substring(gram.lastIndexOf(",") + 1);
它在打印时提供以下输出

三,

给一串

String gram = "0,3";
您只需执行以下操作:

gram = gram.substring(gram.lastIndexOf(",") + 1);
它在打印时提供以下输出

三,


我认为这主要是一个数学问题,而不是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
作为其返回值。

我认为这主要是一个数学问题,而不是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
作为其返回值。

或者您可以简单地这样做。不需要字符串

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

既然h应该是克,你也可以把它设为*1000,或者你可以这么做。不需要字符串

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

既然h应该是克,你也可以把它设为*1000

只要把ftaction乘以10f…如果你的小数部分是
0.0030
我想
30
对吧?”这个小数部分看起来像“0,3”,意思是0.3公斤或300克。我的目标是去掉“0”,所以我只得到“3”的值这令人困惑。3代表什么?如果你有0.03,你期望的值是多少?还有3?只需将ftaction乘以10f…如果小数部分是
0.0030
我想
30
对吧?”这个小数部分看起来像“0,3”,意思是0.3公斤或300克。我的目标是删除“0”,所以我只得到“3”的值。这很混乱。3代表什么?如果你有0.03,你期望的值是多少?还有3个?非常感谢!我用“*10”代替了“*1000”。你的回答很简单,解决了我的问题。现在,当我在我的移动应用程序中输入77.5kg时,应用程序返回77和5,这是完美的:)非常感谢!我用“*10”代替了“*1000”。你的回答很简单,解决了我的问题。现在,当我在我的移动应用程序中输入77.5kg时,应用程序返回77和5,这是完美的:)