【问题标题】:How to remove the "0," in a fraction in Java?如何在Java中删除分数中的“0”?
【发布时间】:2019-09-23 06:16:15
【问题描述】:

我有一个当前重量的浮点值,例如“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()

【问题讨论】:

  • 只需将 ftaction 乘以 10f...
  • 如果你的小数部分像0.0030 我猜是30 对吗?
  • "这个小数部分看起来像“0,3”,意思是 0.3 公斤或 300 克。我的目标是删除“0”,所以我只得到“3”的值。 ”令人困惑。那个 3 代表什么?如果你有 0.03,你期望什么值?还有 3 个?

标签: java string replace split double


【解决方案1】:

给定一个字符串

String gram = "0,3";

你可以这样做:

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

打印时会给出以下输出

3

【讨论】:

    【解决方案2】:

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

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

    既然 h 应该是克,你不妨把它设为 *1000

    【讨论】:

    • 非常感谢!我使用“*10”而不是“*1000”您的回答很简短,它解决了我的问题。现在,当我在移动应用中输入 77.5kg 时,应用返回 77 和 5,这是完美的 :)
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      相关资源
      最近更新 更多