【问题标题】:Java Division Of Integer With Brackets [duplicate]带括号的整数的Java除法[重复]
【发布时间】:2016-08-23 11:23:22
【问题描述】:

在我的应用程序中,我要求用户提供他们的小时费率,然后我有一个 Chronometer,我想计算出他们从一开始就赚了多少钱。为此,我需要将他们的每小时速率转换为秒速率,然后将其乘以来自 Chronometer 的秒数。

        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));


        }
    });

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

【问题讨论】:

    标签: java android integer division


    【解决方案1】:

    试试这个(例如,使用 float/double 代替 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));
    
    
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2018-10-14
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      • 2011-11-27
      • 1970-01-01
      相关资源
      最近更新 更多