【问题标题】:Android java round a double to turn it into intAndroid java 轮转一个 double 把它变成 int
【发布时间】:2014-11-10 13:13:57
【问题描述】:

我必须遵循返回双倍总和结果的代码。 我想将它四舍五入如下 如果结果是从 0 到 999,我希望它四舍五入到下一个 10,例如 956.5 将它四舍五入到 960。 如果结果是从 1000 到 4999,我希望它四舍五入到下一个 50,例如 1116.5 将它四舍五入到 1150。 如果结果是从 5000 到任何我希望它四舍五入到下一个 1000 例如 10116.5 将它四舍五入到 11000。

我的代码是

public void onClick(View v) {
    String f = et1.getText().toString();
    double i = Double.parseDouble(f);
    String s = et2.getText().toString();
    double j = Double.parseDouble(s);
    String w = et4.getText().toString();
    double q = Double.parseDouble(w);
    double price_gold = 10;
    double fpa = 10;
    double fpol = 10;
    double fpolam = 10000;
    double isot = 10;
    double sint_ker = 10;
    double result1 = (i * price_gold) + (j * 1000) + (q * isot);
    double result2 = result1 / 340.75;

    if (result2 >= fpolam){
        double result = result2 * 1.10;
        String res = String.valueOf(result);
        et3.setText(res);
    } else{
        double result = result2;
        String res = String.valueOf(result);
        et3.setText(res);
    }
}

【问题讨论】:

    标签: java android int double rounding


    【解决方案1】:

    以及最终代码

    int gap;
                if (result2 >= fpolam){
                    double result = result2 * 1.10;
    
                    if(result < 1000)
                    {
                      gap = 10;       
                    }
                    else if(result < 5000)
                    {
                      gap = 50;
                    }
                    else //5000+
                    {
                      gap = 100;
                    }
                    int total = (int) Math.ceil(result2 / gap) * gap;
    
    
    
    
                    String res = String.valueOf(total);
                    et3.setText(res);
                } else{
    
                }
    

    【讨论】:

      【解决方案2】:

      您可以使用以下方法:

      double gap;
      
      if(result < 1000)
      {
        gap = 10;       
      }
      else if(result < 5000)
      {
        gap = 50;
      }
      else //5000+
      {
        gap = 1000;
      }
      
      int my_result = Math.ceil((result / gap)) * gap;
      

      这应该可以解决问题:)

      【讨论】:

      • 您发送的方式似乎没问题,但我怎样才能将此代码嵌入到我的?
      • 哪个变量是您要四舍五入为 int 的变量?
      • 不明白为什么当我给你正确的算法时我什至没有+1:\
      • @zozelfelfo 我不明白为什么有人对我的回答投了反对票,这帮助他实现了你的代码。这就是你放代码后他想要的......奇怪的世界......
      【解决方案3】:

      我没有检查 zozelfelfo 代码是否能解决您的问题。但是您询问了如何在您的代码中实现这一点。由于我没有足够的声誉发表评论,我需要回答。

      关于您的问题:

      简单地将zozelfelfo的代码放入一个方法中:

      private int calculate(double numberToCalculate) {
          double gap;
      
          if(numberToCalculate < 1000)
          {
              gap = 10;       
          }
          else if(numberToCalculate < 5000)
          {
              gap = 50;
          }
          else //5000+
          {
              gap = 1000;
          }
      
          int my_result = Math.ceil((numberToCalculate / gap)) * gap;
          return my_result;
      

      之后,您可以从您的 onClick 方法中调用它,例如:

      int myNewNumber = calculate(your number which you want to calculate);
      

      如果你完全熟悉方法,我只是告诉你一些你已经知道的事情,那么我很抱歉。只是想帮忙;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-04
        • 2019-10-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多