Multiplication of two int's gets negative

后端 未结 4 1416
隐瞒了意图╮
隐瞒了意图╮ 2021-01-22 11:26

I\'m currently coding a little download manager and I get a funny output when I try to calculate the download-progress in percent. This is what i use to calculate it:

         


        
4条回答
  •  被撕碎了的回忆
    2021-01-22 12:18

    See http://en.wikipedia.org/wiki/Arithmetic_overflow

    To fix in java, try using a long instead.

    int progress = (int) ((byte_counter * 100L) / size);
    

    or reverse order of operations

    int progress = (int) (((float) byte_counter) / size) * 100);
    

提交回复
热议问题