λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Language/Java

[Java]μžλ°” μ‚°μˆ  μ—°μ‚°μž

by YJ Dev 2024. 4. 27.
728x90
λ°˜μ‘ν˜•
SMALL

μžλ°” ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ‚°μˆ  μ—°μ‚°μžλŠ” 기본적이고 μ€‘μš”ν•œ κ°œλ… 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. 이 μ—°μ‚°μžλ“€μ€ 숫자 데이터λ₯Ό λ‹€λ£° λ•Œ ν•„μˆ˜μ μœΌλ‘œ μ‚¬μš©λ˜λ©°, ν”„λ‘œκ·Έλž¨μ—μ„œ λ‹€μ–‘ν•œ 계산을 μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 이번 ν¬μŠ€νŠΈμ—μ„œλŠ” μžλ°”μ˜ μ‚°μˆ  μ—°μ‚°μžμ— λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

μžλ°” μ‚°μˆ μ—°μ‚°μž


1. μ‚°μˆ  μ—°μ‚°μžβš‘

μ‚°μˆ  μ—°μ‚°μžλŠ” 주둜 λ§μ…ˆ(+), λΊ„μ…ˆ(-), κ³±μ…ˆ(*), λ‚˜λˆ—μ…ˆ(/), 그리고 λ‚˜λ¨Έμ§€(%) μ—°μ‚°μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. 이 μ—°μ‚°μžλ“€μ€ ν”Όμ—°μ‚°μž(operand)라 λΆˆλ¦¬λŠ” κ°’λ“€ μ‚¬μ΄μ—μ„œ μ‚°μˆ μ  계산을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

μ—°μ‚°μž μ„€λͺ…
ν”Όμ—°μ‚°μž + ν”Όμ—°μ‚°μž λ§μ…ˆ μ—°μ‚°
- λΊ„μ…ˆ μ—°μ‚°
* κ³±μ…ˆ μ—°μ‚°
/ λ‚˜λˆ—μ…ˆ μ—°μ‚°
% λ‚˜λˆ—μ…ˆμ˜ λ‚˜λ¨Έμ§€λ₯Ό μ‚°μΆœν•˜λŠ” μ—°μ‚°


μžλ°”μ—μ„œμ˜ κ³±μ…ˆμ€ *, λ‚˜λˆ—μ…ˆμ€ /둜 ν‘œν˜„λ˜λ©°, % μ—°μ‚°μžλŠ” λ‚˜λˆ—μ…ˆμ˜ λ‚˜λ¨Έμ§€λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, int result = num % 3;을 μˆ˜ν–‰ν•˜λ©΄ resultμ—λŠ” 0, 1, 2 쀑 ν•˜λ‚˜μ˜ 값이 μ €μž₯λ©λ‹ˆλ‹€.
μ‚°μˆ  μ—°μ‚°μ˜ νŠΉμ§•μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  1. μ •μˆ˜ νƒ€μž…μ˜ ν”Όμ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ μ—°μ‚° κ²°κ³ΌλŠ” int νƒ€μž…μž…λ‹ˆλ‹€.
  2. ν”Όμ—°μ‚°μž 쀑 ν•˜λ‚˜κ°€ long νƒ€μž…μ΄λ©΄, μ—°μ‚°μ‹μ˜ κ²°κ³ΌλŠ” long νƒ€μž…μž…λ‹ˆλ‹€.
  3. ν”Όμ—°μ‚°μž 쀑 ν•˜λ‚˜κ°€ μ‹€μˆ˜ νƒ€μž…μ΄λ©΄, μ—°μ‚° κ²°κ³ΌλŠ” μ‹€μˆ˜ νƒ€μž…μž…λ‹ˆλ‹€.
public class ArithmeticOperations {
    public static void main(String[] args) {
        // 1. μ •μˆ˜ νƒ€μž…μ˜ ν”Όμ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ μ—°μ‚° κ²°κ³ΌλŠ” int νƒ€μž…μž…λ‹ˆλ‹€.
        int a = 5;
        int b = 3;
        int result1 = a + b;
        System.out.println("result1: " + result1); // κ²°κ³ΌλŠ” int νƒ€μž…μΈ 8μž…λ‹ˆλ‹€.

        // 2. ν”Όμ—°μ‚°μž 쀑 ν•˜λ‚˜κ°€ long νƒ€μž…μ΄λ©΄, μ—°μ‚°μ‹μ˜ κ²°κ³ΌλŠ” long νƒ€μž…μž…λ‹ˆλ‹€.
        long c = 1000000000L; // long νƒ€μž…
        int d = 2;
        long result2 = c * d;
        System.out.println("result2: " + result2); // κ²°κ³ΌλŠ” long νƒ€μž…μΈ 2000000000Lμž…λ‹ˆλ‹€.

        // 3. ν”Όμ—°μ‚°μž 쀑 ν•˜λ‚˜κ°€ μ‹€μˆ˜ νƒ€μž…μ΄λ©΄, μ—°μ‚° κ²°κ³ΌλŠ” μ‹€μˆ˜ νƒ€μž…μž…λ‹ˆλ‹€.
        double e = 5.0; // μ‹€μˆ˜ νƒ€μž…
        int f = 2;
        double result3 = e / f;
        System.out.println("result3: " + result3); // κ²°κ³ΌλŠ” μ‹€μˆ˜ νƒ€μž…μΈ 2.5μž…λ‹ˆλ‹€.
    }
}

2. μ •ν™•ν•œ κ²°κ³Όλ₯Ό μ–»κΈ° μœ„ν•΄ μ •μˆ˜ μ—°μ‚° ν™œμš©ν•˜κΈ°πŸŒž

μ •ν™•ν•œ κ²°κ³Όλ₯Ό μ–»κΈ° μœ„ν•΄ μ •μˆ˜ 연산을 ν™œμš©ν•˜λŠ” 것은 λΆ€λ™μ†Œμˆ˜μ  μ—°μ‚°μ˜ 반올림 였차λ₯Ό ν”Όν•˜κ³  μ •ν™•ν•œ 값을 μ–»κΈ° μœ„ν•œ μ€‘μš”ν•œ μ „λž΅μž…λ‹ˆλ‹€. λΆ€λ™μ†Œμˆ˜μ  μ—°μ‚°μ—μ„œλŠ” μ΄μ§„λ²•μœΌλ‘œ ν‘œν˜„λ˜λŠ” μ†Œμˆ˜μ  μ΄ν•˜μ˜ μˆ«μžκ°€ μ •ν™•ν•˜κ²Œ ν‘œν˜„λ˜μ§€ μ•Šμ„ 수 있기 λ•Œλ¬Έμ— μ •μˆ˜ 연산을 ν™œμš©ν•˜μ—¬ μ •ν™•ν•œ κ²°κ³Όλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, κΈˆμ•‘ 계산과 같은 κ²½μš°μ—λŠ” λΆ€λ™μ†Œμˆ˜μ  연산을 ν”Όν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

μ•„λž˜μ˜ μ½”λ“œλŠ” 두 개의 μ •μˆ˜λ₯Ό λ‚˜λˆ„μ–΄ μ†Œμˆ˜μ  μ΄ν•˜λ₯Ό 버리고 μ •ν™•ν•œ κ²°κ³Όλ₯Ό μ–»λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

public class IntegerArithmetic {
    public static void main(String[] args) {
        // λΆ€λ™μ†Œμˆ˜μ  연산을 ν”Όν•˜κ³  μ •ν™•ν•œ κ²°κ³Όλ₯Ό μ–»κΈ° μœ„ν•΄ μ‹€μˆ˜λ₯Ό μ •μˆ˜λ‘œ λ³€ν™˜ν•˜μ—¬ 계산
        double unitPrice = 9.99; // μƒν’ˆ 단가: 9.99λ‹¬λŸ¬
        int quantity = 4; // ꡬ맀 μˆ˜λŸ‰: 4개
        
        // 총 가격 계산 (μ‹€μˆ˜λ₯Ό μ •μˆ˜λ‘œ λ³€ν™˜ν•˜μ—¬ μ—°μ‚°)
        int totalPrice = (int)(unitPrice * quantity); // μ‹€μˆ˜λ₯Ό μ •μˆ˜λ‘œ λ³€ν™˜ν•˜μ—¬ μ—°μ‚°
        
        // κ²°κ³Ό 좜λ ₯
        System.out.println("총 가격: " + totalPrice + "λ‹¬λŸ¬");
    }
}


μœ„μ˜ μ½”λ“œμ—μ„œλŠ” μƒν’ˆμ˜ 단가λ₯Ό μ‹€μˆ˜λ‘œ ν‘œν˜„ν•˜κ³ , 이λ₯Ό μ •μˆ˜λ‘œ λ³€ν™˜ν•˜μ—¬ ꡬ맀 μˆ˜λŸ‰κ³Ό κ³±ν•˜μ—¬ 총가격을 κ³„μ‚°ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ μ‹€μˆ˜λ₯Ό μ •μˆ˜λ‘œ λ³€ν™˜ν•˜μ—¬ μ—°μ‚°ν•˜λ©΄ λΆ€λ™μ†Œμˆ˜μ  연산을 ν”Όν•˜κ³  μ •ν™•ν•œ κ²°κ³Όλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.
λΆ€λ™μ†Œμˆ˜μ μ— λŒ€ν•΄ 쑰금 더 μžμ„Ένžˆ μ•Œκ³  μ‹Άλ‹€λ©΄ μ•„λž˜ ν¬μŠ€νŒ…μ„ μ°Έκ³ ν•΄ μ£Όμ„Έμš”πŸ˜

" "

[Java]μžλ°” μ‹€μˆ˜ νƒ€μž…

λͺ©μ°¨ 1. μ‹€μˆ˜ νƒ€μž…μ˜ μ’…λ₯˜ 2. 정밀도와 κ·Όμ‚¬μΉ˜ 3. 핡심 λ‚΄μš© μžλ°”μ—μ„œλŠ” μ •μˆ˜μ™€ ν•¨κ»˜ μ‹€μˆ˜ νƒ€μž…λ„ 맀우 μ€‘μš”ν•©λ‹ˆλ‹€. μ •μˆ˜ νƒ€μž…κ³Ό 달리 μ‹€μˆ˜ νƒ€μž…μ€ μ†Œμˆ˜μ  μ΄ν•˜μ˜ 값을 μ €μž₯ν•  수 μžˆμ–΄μ„œ κ³„μ‚°μ˜ μ •

creativevista.tistory.com


3. λ‚˜λˆ—μ…ˆ μ—°μ‚° 결과둜 λ‚˜νƒ€λ‚˜λŠ” NaNκ³Ό Infinity μ²˜λ¦¬ν•˜κΈ°πŸŒ 

λ‚˜λˆ—μ…ˆ μ—°μ‚° 결과둜 λ‚˜νƒ€λ‚˜λŠ” NaNκ³Ό InfinityλŠ” νŠΉλ³„ν•œ μƒν™©μ—μ„œ λ°œμƒν•˜λŠ”λ°, 주둜 0으둜 λ‚˜λˆ„λŠ” κ²½μš°μ— λ°œμƒν•©λ‹ˆλ‹€. NaN은 "Not a Number"의 μ•½μžλ‘œ, μˆ«μžκ°€ μ•„λ‹˜μ„ λ‚˜νƒ€λ‚΄λ©°, InfinityλŠ” λ¬΄ν•œλŒ€λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ΄λŸ¬ν•œ κ²°κ³Όλ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” 쑰건문을 μ‚¬μš©ν•˜μ—¬ 상황을 νŒλ³„ν•˜κ³  μ μ ˆν•œ λŒ€μ‘μ„ ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.

μ•„λž˜μ˜ μ˜ˆμ œλŠ” λ‚˜λˆ—μ…ˆ 연산을 μˆ˜ν–‰ν•˜μ—¬ NaNκ³Ό Infinityκ°€ λ°œμƒν•˜λŠ” 경우λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.

public class InfinityAndNaNCheckExample {

    public static void main(String[] args) {
        int x = 5;
        double y = 0.0;
        double z = x / y; // 0으둜 λ‚˜λˆ„κΈ° 연산을 μˆ˜ν–‰ν•˜μ—¬ Infinity λ˜λŠ” NaN이 λ°œμƒν•  수 있음
        
        // Infinityλ‚˜ NaN인지 ν™•μΈν•˜μ—¬ 처리
        if (Double.isInfinite(z) || Double.isNaN(z)) {
            System.out.println("κ°’ μ‚°μΆœ λΆˆκ°€"); // Infinityλ‚˜ NaN이 λ°œμƒν•œ 경우
        } else {
            System.out.println(z + 2); // μ •μƒμ μœΌλ‘œ 값을 κ³„μ‚°ν•˜μ—¬ 좜λ ₯
        }
    }
    
}


Double.isInfinite(double)
λ©”μ„œλ“œλŠ” 주어진 λΆ€λ™μ†Œμˆ˜μ  μˆ«μžκ°€ λ¬΄ν•œλŒ€(Infinity)인지λ₯Ό ν™•μΈν•˜κ³ , κ·Έ κ²°κ³Όλ₯Ό true λ˜λŠ” false둜 λ°˜ν™˜ν•©λ‹ˆλ‹€.

Double.isNaN(double) λ©”μ„œλ“œλŠ” 주어진 λΆ€λ™μ†Œμˆ˜μ  μˆ«μžκ°€ NaN(Not-a-Number)인지λ₯Ό ν™•μΈν•˜κ³ , κ·Έ κ²°κ³Όλ₯Ό true λ˜λŠ” false둜 λ°˜ν™˜ν•©λ‹ˆλ‹€.


4. 핡심 λ‚΄μš©πŸ‘€

μžλ°” μ‚°μˆ μ—°μ‚°μž
728x90
λ°˜μ‘ν˜•