JAVA

[JAVA] μ‹€μˆ˜ - 뢀동 μ†Œμˆ˜μ 

λ°°κ³ νŒŒμš” 2023. 1. 26. 16:26
728x90

πŸ“ μ‹€μˆ˜μ˜ λ©”λͺ¨λ¦¬ ν‘œν˜„ ?

  • μ»΄ν“¨ν„°μ˜ λ©”λͺ¨λ¦¬λŠ” 2μ§„μˆ˜ 체계λ₯Ό 기반으둜 데이터λ₯Ό μ €μž₯.
  • μ‹€μˆ˜λ„ 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•΄μ•Όν•˜λ‹ˆκΉŒ λ³΅μž‘ν•˜κ² μ§€.
  • μ»΄ν“¨ν„°μ—μ„œ μ‹€μˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ” 방법 
    • κ³ μ • μ†Œμˆ˜μ  방식
    • 뢀동 μ†Œμˆ˜μ  방식

 

 

πŸ“ κ³ μ • μ†Œμˆ˜μ  방식 ?

  • κ³ μ • μ†Œμˆ˜μ  방식은 λ©”λͺ¨λ¦¬λ₯Ό   μ •μˆ˜λΆ€    와    μ†Œμˆ˜λΆ€  λ‘œ κ³ μ •ν•΄μ„œ λ‚˜λˆ„κ³  μ§€μ •ν•΄μ„œ μ²˜λ¦¬ν•˜λŠ” 방식.
  • κ³ μ • μ†Œμˆ˜μ  방식은 μ†Œμˆ˜λΆ€μ˜ 자릿수λ₯Ό 미리 정해놓고 ν‘œν˜„ν•˜κΈ° λ•Œλ¬Έμ— μ§κ΄€μ μž„.
  • μ˜ˆμ‹œ) -1.25 
    • - : λΆ€ν˜Έ λΉ„νŠΈ   (λΆ€ν˜ΈλΉ„νŠΈ :: μ–‘μˆ˜/음수λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•œ λΉ„νŠΈ. // 0:μ–‘μˆ˜, 1:음수둜 톡칭. )
    • 1 : μ •μˆ˜λΆ€
    • .25 : μ†Œμˆ˜λΆ€
    • μ†Œμˆ˜μ  2자리 κΉŒμ§€ ν‘œν˜„.
  • μž₯점 : 직관적.
  • 단점 : ν‘œν˜„ κ°€λŠ₯ λ²”μœ„κ°€ μ œν•œμ μž„. ( μ•„μ£Ό 치λͺ…적❗️)

 

 

 

πŸ“ λΆ€λ™ μ†Œμˆ˜μ  방식 ?

  • ν‘œν˜„ν•  수 μžˆλŠ” κ°’μ˜ λ²”μœ„λ₯Ό μ΅œλŒ€ν•œ λ„“ν˜€ 였차λ₯Ό μ€„μ΄λŠ” 방식.
  • 뢀동 μ†Œμˆ˜μ  방식은 λ©”λͺ¨λ¦¬λ₯Ό   μ§€μˆ˜λΆ€    와    κ°€μˆ˜λΆ€  λ‘œ λ‚˜λˆ”.
  • μ˜ˆμ‹œ) 1.xxx * 2^n
    • 1.xxx : κ°€μˆ˜
    • 2^n : μ§€μˆ˜

 

 

πŸ“ μ˜ˆμ‹œ

double value1 = 12.23;
double value2 = 34.45;

// κΈ°λŒ€κ°’ : 46.68
System.out.println(value1 + value2); // 46.68000000000001
  • 뢀동 μ†Œμˆ˜μ  λ°©μ‹μœΌλ‘œ 인해, μ •ν™•ν•œ 값이 λ–¨μ–΄μ§€μ§€ μ•Šκ²Œ λœλ‹€.
  • 참고둜, μ†Œμˆ˜μ  2μžλ¦¬κΉŒμ§€ ( 즉, κ³ μ • μ†Œμˆ˜μ  방식) 둜 ν•˜κ²Œ λœλ‹€λ©΄, 값은 46.68둜 잘 λ‚˜μ˜€κ²Œ λœλ‹€. (λ‹Ήμ—°ν•˜κ² μ§€λ§Œ.. πŸ˜…πŸ˜…..)

 

 

πŸ“ μ •ν™•ν•œ μ†Œμˆ˜ 계산법

  • μ •μˆ˜λ‘œ μΉ˜ν™˜ν•΄μ„œ 계산
    • μ˜ˆμ‹œ) 
String str_val = "1.25";
double doub_val = Double.parseDouble(str_val); // String to Double

double min = doub_val - 1;

// result κ°’ :: 0.25
double result = Math.round(min*100)/100.0; // μ†Œμˆ˜μ  2μžλ¦¬κΉŒμ§€.
// λ‚˜λˆŒ λ•Œ κΌ­! 100.0 으둜 λ‚˜λˆ μ€˜μ•Ό μ†Œμˆ˜λΆ€μ˜ 값이 λ‚˜μ˜€κ²Œ 됨.
  • BigDecimal 클래슀
    • (이건 잘 λͺ¨λ₯΄κ² λ‹€..😭😭.. λ‹€μŒ ν¬μŠ€νŒ…μ—μ„œ μ μ–΄λ³΄λ„λ‘ν•˜μž...😭)

 

 

 


좜처 :  http://www.tcpschool.com/java/java_datatype_floatingPointNumber

https://inpa.tistory.com/entry/JAVA-β˜•-μ‹€μˆ˜-ν‘œν˜„λΆ€λ™-μ†Œμˆ˜μ -원리-ν•œλˆˆμ—-μ΄ν•΄ν•˜κΈ° 

 

 


개발 곡뢀λ₯Ό μœ„ν•œ λΈ”λ‘œκ·Έ μž…λ‹ˆλ‹€. 

였λ₯˜κ°€ μžˆλ‹€λ©΄ λŒ“κΈ€λ‘œ μ•Œλ €μ£Όμ„Έμš”! 

κ°μ‚¬ν•©λ‹ˆλ‹€.

728x90