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
ấ
ể ự
ệ
ữ
ụ
ấ
ữ
ượ ọ
là 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.