Sobes.tech
Junior

Чӣ гуна метавон намудҳои додаҳои ибтидоиро бо ҳам муқоиса кард?

sobes.tech AI

Ҷавоб аз AI

Типҳои додаҳои primitives дар Java бо истифода аз операторҳои муқоиса бар асоси арзишашон муқоиса карда мешаванд:

  • == (баробарӣ)
  • != (ғайрибарорӣ)
  • > (бештар)
  • < (камтар)
  • >= (бештар ё баробар)
  • <= (камтар ё баробар)
// Муқоиса кардани рақамҳои пурра
int x = 10;
int y = 20;
boolean isEqual = (x == y); // false
boolean isGreater = (x > y); // false

// Муқоиса кардани рақамҳои бо нуқтаҳои ҳаракаткунанда
double a = 3.14;
double b = 3.14;
boolean areEqualDoubles = (a == b); // true (барои арзишҳои дақиқ)

// Муқоиса кардани аломатҳо
char c1 = 'A';
char c2 = 'B';
boolean isCLessThanC2 = (c1 < c2); // true

// Муқоиса кардани навъи boolean
boolean flag1 = true;
boolean flag2 = false;
boolean areFlagsEqual = (flag1 == flag2); // false

Муҳим аст, ки дар бораи муқоиса кардани рақамҳои бо нуқтаҳои ҳаракаткунанда (float, double) истифодаи мустақими == метавонад нодуруст бошад, зеро хусусиятҳои намоиши рақамҳо дар ёддошт. Дар чунин ҳолатҳо, барои санҷиши баробарии тақрибӣ, муқоиса кардани арзиши абсолютии фарқ бо як камтар аз толерантӣ (epsilon) тавсия мешавад.

double val1 = 0.1 + 0.2; // дар асл наметавонад 0.3 бошад, бо сабаби дақиқӣ
double val2 = 0.3;
double epsilon = 1e-9; // Толерантӣ хурд

// Роҳи нодуруст
boolean incorrectEquality = (val1 == val2); // мумкин аст, ки false

// Роҳи тавсияшуда барои муқоиса кардани рақамҳои бо нуқтаҳои ҳаракаткунанда
boolean correctEquality = (Math.abs(val1 - val2) < epsilon); // true