THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 24

B ng cách này đã đ t

ặ y b ng

ằ 0.333333, nh d ki n.

ư ự ế

Các toán t mà ta đã g p đ n gi —c ng, tr , nhân, và chia—cũng làm vi c đ

c v i các giá tr d u ph y

ế

ệ ượ ớ

ị ấ

đ ng, m c dù b n có th th y thú v khi bi t đ

c r ng c ch bên trong thì khác h n. Th c ra, đa s các

ể ấ

ế ượ ằ

ơ ế

b vi x lý đ u có ph n m m chuyên d ng đ th c hi n các phép tính có d u ph y đ ng.

ể ự

3.2 Chuy n đ i t

ổ ừ double sang int

Nh tôi đã nói, Java quy đ i các s

ư

ố int thành double m t cách t đ ng n u th y c n thi t, vì trong quá

ự ộ

ế

ấ ầ

ế

trình chuy n đ i không b m t thông tin. Ng

c l i, chuy n t

ị ấ

ượ ạ

ể ừ double sang int l i c n ph i làm tròn s .

ạ ầ

Java không t đ ng làm vi c này, đ đ m b o r ng b n, ng

i l p trình, cũng bi t đ

c r ng ph n th p

ự ộ

ể ả

ả ằ

ườ ậ

ế ượ ằ

phân c a s s b m t đi.

ủ ố ẽ ị ấ

Cách đ n gi n nh t đ chuy n m t giá tr s ph y đ ng sang s nguyên là th c hi n vi c

ơ

ấ ể

ị ố

đ nh

ki u

(typecast). S dĩ g i là đ nh ki u vì b ng cách đó ta có th l y m t giá tr thu c ki u này r i “ n

ể ấ

ồ ấ

đ nh” nó thành ki u khác (nh vi c đ nh hình b ng khuôn đúc kim lo i).

ư ệ ị

Cú pháp c a đ nh ki u là đ t tên ki u gi a c p ngo c tròn r i dùng nó nh m t toán t . Ch ng h n,

ữ ặ

ư ộ

double

pi = 3.14159;

int

x = (

int

) pi;

Toán t

ử (int) có tác d ng chuy n b t kì th gì đi sau nó thành m t s nguyên, b i v y

ộ ố

ở ậ x nh n giá tr

b ng 3.

Đ nh ki u có quy n u tiên cao h n so v i các toán t s h c, b i v y ví d sau, tr

c h t giá tr c a

ề ư

ơ

ử ố ọ

ở ậ ở

ướ ế

ị ủ

pi đ

c chuy n thành s nguyên, và k t qu s là 60.0, ch không ph i 62.

ượ

ế

ả ẽ

double

pi = 3.14159;

double

x = (

int

) pi * 20.0;

Vi c chuy n thành s nguyên s luôn làm tròn xu ng, ngay c khi ph n th p phân là 0.99999999. Cách

ho t đ ng này (quy n u tiên và vi c làm tròn) có th khi n cho vi c đ nh ki u d gây nên l i.

ạ ộ

ề ư

ế

ệ ị

3.3 Các ph

ng th c Math

ươ

Khi làm toán, có l b n đã th y các hàm nh sin và log, đ ng th i cũng bi t cách tính các bi u th c nh

ẽ ạ

ư

ế

ư

sin(π/2) và log(1/x). Đ u tiên, b n l

ng giá bi u th c trong c p ngo c tròn, v n đ

c g i là

ạ ượ

ượ ọ

đ i s

ố ố c a

hàm. Ti p theo b n l

ng giá b n thân hàm đó, b ng cách tra b ng ho c tính toán.

ế

ạ ượ

Công đo n này có th đ

c áp d ng l p l i đ l

ng giá nh ng bi u th c ph c t p h n nh

ể ượ

ặ ạ ể ượ

ứ ạ

ơ

ư

log(1/sin(π/2)). Đ u tiên, b n l

ng giá đ i s c a hàm đ ng trong cùng, r i l

ng giá b n thân hàm

ạ ượ

ố ố ủ

ồ ượ

đó, và c nh v y.

ư ậ

Java cung c p cho ta các hàm đ th c hi n nh ng phép toán thông d ng nh t. Nh ng hàm này đ

c g i

ể ự

ượ ọ

ph

ng th c

ươ

. Các ph ng th c toán h c đ c kích ho t b ng cách dùng cú pháp t ng t nh câu

ươ

ọ ượ

ạ ằ

ươ

ư

l nh

ệ print mà ta đã g p:

double

root = Math.sqrt(17.0);

double

angle = 1.5;

double

height = Math.sin(angle);

Ví d đ u tiên đ t

ụ ầ

ặ root b ng căn b c hai c a 17. Ví d th hai đi tìm sin c a giá tr

ụ ứ

ị angle, v n là

1.5. Java

gi thi t r ng nh ng giá tr b n dùng v i

ế ằ

ị ạ

ớ sin và các hàm l ng giác khác (

ượ

cos, tan) đ u tính theo

radian.