Я пытаюсь разработать простой метод, но по какой-то причине значения не вычисляются:
public static void animateBattery()
{
float boxPercent = (58/100);
System.out.println( "boxPercent "+ boxPercent);
int batteryPercent = (int) Math.round(storageLimit / 100 * elecStored);
setBatteryColor(batteryPercent);
System.out.println( "batteryPercent "+ batteryPercent);
int storedPercent = (int) Math.round(boxPercent * batteryPercent);
System.out.println( "storedPercent "+ storedPercent);
System.out.println( "Another demonstration " + 58/100);
System.out.println( "One more " + 100);
batteryColor.setBounds(890, 405 + (58 - storedPercent), 81, storedPercent);
frame.getContentPane().add(batteryColor);
}
выходы:
boxPercent 0.0
batteryPercent 0
storedPercent 0
Another demonstration 0
One more 100
Надеюсь, я предоставил достаточно кода, чтобы сработать. Прошу прощения за то, что я новичок. Любая помощь в этом будет принята с благодарностью!
По умолчанию с целочисленными операндами вы получаете целочисленное деление, подумайте о том, чтобы иметь хотя бы один из ваших операндов типа float
.
Спасибо за помощь ребята!
58 / 100 == 0
, но оставшийся 58 % 100 == 58
.
(58/100)
- это целочисленная арифметическая функция перед преобразованием вfloat
. Так что это0
.