import java.util.ArrayList;
import java.util.List;

public class WadahAngka {
    public static void main(String[] args) {
        Meteran<Integer> meteranBulat = new Meteran<>(List.of(10, 25, 5));
        Meteran<Double> meteranPecahan = new Meteran<>(List.of(1.5, 2.5));

        System.out.printf("Rentang bulat  : %.2f%n", meteranBulat.rentang());
        System.out.printf("Rentang pecahan: %.2f%n", meteranPecahan.rentang());
        System.out.printf("Total bulat    : %.2f%n", meteranBulat.total());
    }
}

class Meteran<T extends Number> {
    private final List<T> data;

    Meteran(List<T> data) {
        this.data = new ArrayList<>(data);
    }

    double rentang() {
        double terkecil = Double.MAX_VALUE;
        double terbesar = -Double.MAX_VALUE;
        for (T nilai : data) {
            double angka = nilai.doubleValue();
            terkecil = Math.min(terkecil, angka);
            terbesar = Math.max(terbesar, angka);
        }
        return terbesar - terkecil;
    }

    double total() {
        double jumlah = 0.0;
        for (T nilai : data) {
            jumlah += nilai.doubleValue();
        }
        return jumlah;
    }
}
