2016-08-23 60 views
-5

在我的应用程序中,我要求用户提供他们的小时费率,然后我有一个计时表,我想弄清楚他们自从时间开始以来赚了多少。要做到这一点,我需要把他们的小时费率变成秒钟,再乘以天文台的秒数。爪哇分区与整型括号

 timer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() 
    { 
     @Override 
     public void onChronometerTick(Chronometer chronometer){ 
      long timeElapsed = SystemClock.elapsedRealtime() - timer.getBase(); 
      int hours = (int) (timeElapsed/3600000); 
      int minutes = (int) (timeElapsed - hours * 3600000)/60000; 
      int seconds = (int) (timeElapsed - hours * 3600000 - minutes * 60000)/1000; 

      int hrlyRate = Integer.parseInt(hourlyRate.getText().toString()); 

      secondsRate = (hrlyRate/60)/60; 
      moneyEarned = secondsRate * seconds; 

      Log.d("hrlyRate", Integer.toString(hrlyRate)); 
      Log.d("secondsRate", Integer.toString(secondsRate)); 


     } 
    }); 

假设用户输入40到hourlyRate字段这是我从一个EditText得到的,为什么是secondsRate = 0的计算?不应该(40/60)/ 60 = $ 0.01 /秒?

回答

0

尝试此(使用浮动/双代替int和60.0f/60.0而不是60,例如)

timer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() 
{ 
    @Override 
    public void onChronometerTick(Chronometer chronometer){ 
     double timeElapsed = SystemClock.elapsedRealtime() - timer.getBase(); 
     double hours = (double) (timeElapsed/3600000.0); 
     double minutes = (double) (timeElapsed - hours * 3600000.0)/60000.0; 
     double seconds = (double) (timeElapsed - hours * 3600000.0 - minutes * 60000.0)/1000; 

     double hrlyRate = Double.parseDouble(hourlyRate.getText().toString()); 

     secondsRate = (hrlyRate/60.0)/60.0; 
     moneyEarned = secondsRate * seconds; 

     Log.d("hrlyRate", Double.toString(hrlyRate)); 
     Log.d("secondsRate", Double.toString(secondsRate)); 


    } 
});