Giriş
Şu satırı dahil ederiz.
average metodu
Şöyle yaparız.
Bu metod Stream arayüzünden farklı olarak Collector parametresi almaz. İmzası şöyle
Şöyle yaparız.
Bir OptionalDouble döner. OptionalDouble sınıfının getAsDouble metodu ile değeri alırız. Şöyle yaparız.
Açıklaması şöyle
Bu toplama işlemi Kahan summation kullandığı için şu koddan daha az hatay sebep olur.
Şu satırı dahil ederiz.
import java.util.stream.DoubleStream;
JDK'da FloatStream diye bir sınıf yok!average metodu
Şöyle yaparız.
double[] x = {5.4, 5.56, 1.0};
double avg = Arrays.stream(x).average.getAsDouble ();
collect metoduBu metod Stream arayüzünden farklı olarak Collector parametresi almaz. İmzası şöyle
R collect(Supplier<R>, ObjDoubleConsumer<R>, BiConsumer<R,R>)
iterate metoduŞöyle yaparız.
double[] sequence = DoubleStream.iterate(200.0, d -> d + 0.001)
.limit((int) (1 + (399.999 - 200.0) / 0.001)).toArray();
min metoduBir OptionalDouble döner. OptionalDouble sınıfının getAsDouble metodu ile değeri alırız. Şöyle yaparız.
double min = DoubleStream.of(array).parallel().min().getAsDouble();
sum metoduAçıklaması şöyle
Şöyle yaparız.In particular, this method may be implemented using compensated summation or other technique to reduce the error bound in the numerical sum compared to a simple summation of double values.
Double sum = DoubleStream.builder().add(0.1).add(0.1).add(0.1).add(0.1).add(0.1)
.add(0.1).add(0.1).add(0.1).add(0.1).add(0.1).build().sum();
System.out.println(sum);
Çıktı olarak 1.0 alırız.Bu toplama işlemi Kahan summation kullandığı için şu koddan daha az hatay sebep olur.
System.out.println(0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1);
Çıktı olarak 0.9999999999999999 alırız.
Hiç yorum yok:
Yorum Gönder