Java 如何从正在运行的时钟除以指定变量得到百分比

Java 如何从正在运行的时钟除以指定变量得到百分比,java,time,percentage,chronometer,Java,Time,Percentage,Chronometer,我有一段代码,其中变量date3来自日期选择器对话框 @Override public void onTimeSet(TimePicker timePicker, int hour2, int minute2) { hour2final = hour2; minute2final = minute2; Calendar c = Calendar.getInstance (); c.setTimeInMillis (

我有一段代码,其中变量date3来自日期选择器对话框

    @Override
    public void onTimeSet(TimePicker timePicker, int hour2, int minute2) {
        hour2final = hour2;
        minute2final = minute2;

        Calendar c = Calendar.getInstance ();
        c.setTimeInMillis ( 0 );
        c.set ( year2final, month2final, day2final, hour2final, minute2final, 0 );
        date2 = c.getTimeInMillis ();
        difference = date2 - date1;

        Calendar c1 = Calendar.getInstance ();
        c1.setTimeInMillis ( 0 );
        c1.set ( year2final, month2final - 1, day2final, hour2final, minute2final, 0 );
        date3 = c1.getTimeInMillis ();
        difference3 = date3 - date;
        ondatecountdowntext3 ();
我的计时器上的这个代码(作为一个计数计时器)


t1是计时表启动和运行的时间,t2(date3)是计时表运行到100%之前的总时间(以毫秒为单位)。问题是,当我尝试划分t1(运行时间)和t2(日期3“总时间”)时,texview tvp中的百分比并没有按我希望的那样运行。它一直保持在0%并且没有增加。有人有解吗?

如果t2是整数,那么分数“t1*100/t2”是整数除法。你知道吗?其他想法:t1应该乘以1000,而不是100(t1是毫秒值)。如果t2=date3,t2是整数吗?只是澄清一下,因为date3=c1.getTimeInMillis();它应该是毫秒。如果我错了,请纠正我。无论如何,是的,*100应该是1000,我刚刚注意到了。我不知道
.getTimeInMillis()
是从哪里来的,但是对于
System.currentTimeMillis()
它返回一个long。因此,
t2
将是一个长/int。然后除以
t2
得到一个长/int。换句话说,除以一个数字的数量将定义结果的类型(
1/2->int
1/2.0->double
)。问题是百分比分数的值不是int/long值,因此它停留在int/long值(0)上。因此t1、t2和百分比应为双精度/浮点值。要意识到这一点。谢谢兄弟,它解决了问题。
private void starttimercu() {

    cupti.setBase ( SystemClock.elapsedRealtime () );
    cupti.start ();
    ondatecountdowntext3 ();

    cupti.setOnChronometerTickListener ( new Chronometer.OnChronometerTickListener () {
        @Override
        public void onChronometerTick(Chronometer chronometer) {
            t1 = SystemClock.elapsedRealtime () - chronometer.getBase ();
            t2 = date3;
            percentage = t1*100/t2;
            tvp.setText ( percentage+"%" );

        }
    } );


}