λΆλμμμ μ μ€μ°¨
μ»΄ν¨ν°λ 2μ§μλ₯Ό μ¬μ©νμ¬ μ€μλ₯Ό κ·Όμ¬μΉλ‘ νννλ€. κ·Έλμ μλμ κ°μ μμ μ€μ°¨κ° λ°μν μ μλ€.
double a = 0.2 + 0.1;
System.out.println(a); // output: 0.30000000000000004
λνκ΅ 1νλ 1νκΈ° λ λ°°μ°λ μμ κ°μ λ΄μ©μ΄λ€. μ΄κ±Έ λͺ¨λ₯΄μ§λ μλλ€. κ·Όλ° μμ λ§ν λμ―€ λνλ λ μμνκ² νλ€. κ·Έλμ λ€μλ μ΄λ° μ€μλ₯Ό λ²νμ§ μκ² λ€λ μμ§λ‘ λΆλμμμ μ€μ°¨λ₯Ό κ΄λ¦¬νλ λ²μ μ μ΄λ³Έλ€.
BigDecimal μ¬μ©νκΈ°
Javaμμλ BigDecimal ν΄λμ€λ₯Ό μ¬μ©νλ©΄ μ νν μμμ μ°μ°μ΄ κ°λ₯νλ€. λ¨μ μΌλ‘λ μλκ° λ리λ€λ μ κ³Ό μ¬μ©λ²μ΄ μ‘°κΈ λΆνΈνλ€λ μ μ΄ μλ€.
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
System.out.println(a.add(b)); // output: 0.3
μ£Όμν μ μ μ΄κΈ°νν λ double νμ μ κ·Έλλ‘ λ겨주면 μ€μ°¨λ κ·Έλλ‘ λ°μνλ€. κ·Έλμ λ¬Έμμ΄λ‘ μ΄κΈ°νν΄μ£Όλ κ²μ΄ μμ !
BigDecimal a = new BigDecimal(0.3);
BigDecimal b = new BigDecimal("0.3");
System.out.println(a); // output: 0.2999999999999...
System.out.println(b); // output: 0.3
μ€μ μ¬μ©μ μ€μ΄κΈ°
κΌ μ¨μΌνλ μν©μ΄ μλλΌλ©΄ μ€μλ₯Ό μμ μμ°λ κ²λ λ°©λ²μ΄λ€. μλ₯Ό λ€μ΄,
// Math.sqrt()μ λ¦¬ν΄ κ°μ μ€μ
for (int i = 0; i < Math.sqrt(n); i++) {
//...
}
// i * i < n ννλ‘ λ°κΎΈλ©΄ μ€μ μ¬μ©μ νΌν μ μμ
for (int i = 0; i * i < n; i++) {
//...
}
// Math.log()μ λ¦¬ν΄ κ°μ μ€μ
cnt += Math.log(n) / Math.log(i);
// μΌμΌμ΄ μΉ΄μ΄νΈ ν΄μ€μΌλ‘μ¨ μ€μ μ¬μ© νΌνκΈ°
long pow = (long) i;
while (pow <= n) {
cnt++;
pow *= i;
}
λ¬Όλ‘ μ΄λ κ² νλ©΄ μ½λκ° μ₯ν©ν΄μ§κ³ , μ€λ²νλ‘μ°κ° λ°μν νλ₯ λ λμμ§λ€. κ·Έλλ μ€λ²νλ‘μ°λ λμ μ 보μ΄κΈ°λΌλ νμ§ λΆλμμμ μ€μ°¨λ ν°λλ§ ν΄μ μ°Ύμλ΄κΈ°λ μ΄λ ΅λ€.
'Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] JSchλ₯Ό μ¬μ©νμ¬ λ¦¬λ μ€ λͺ λ Ήμ΄ μ격 μ μ‘νκΈ° (0) | 2024.07.17 |
---|---|
[Java] BitSet (0) | 2024.04.19 |