Sobes.tech
Junior — Middle

Mi a különbség a BigDecimal és a Double osztályok között Java-ban, és melyik esetben célszerűbb az egyiket vagy a másikat használni?

sobes.tech MI

Válasz az MI-től

A Java Double osztály egy dupla pontosságú lebegőpontos primitív típus (64 bit). Gyors aritmetikai műveletekhez ideális lebegőpontos számokkal, de a bináris ábrázolás sajátosságai miatt nem mindig tárol pontosan tizedes törteket, ami kerekítési hibákhoz vezethet.

BigDecimal egy osztály, amely tetszőleges pontosságú tizedes számokkal való munkára szolgál. Szövegként vagy számjegyek tömbjeként tárolja a számokat, így elkerülhető a kerekítési hiba, és pontosságot biztosít pénzügyi és más kritikus számításokban.

Mikor használjuk:

  • Használja a Double-t, amikor a sebesség fontos, és elfogadhatóak a kis hibák (pl. tudományos számítások, grafikonok).
  • Használja a BigDecimal-t pénzügyi számításokhoz, ahol a pontosság és a helyes kerekítés kritikus (pl. pénzkezelésnél).

BigDecimal példa:

import java.math.BigDecimal;

BigDecimal ár = new BigDecimal("19.99");
BigDecimal mennyiség = new BigDecimal("3");
BigDecimal összeg = ár.multiply(mennyiség);
System.out.println("Összeg: " + összeg); // Összeg: 59.97

Double példa:

double ár = 19.99;
double mennyiség = 3;
double összeg = ár * mennyiség;
System.out.println("Összeg: " + összeg); // Lehet 59.96999999999999