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

Number of minutes since midnight: 719

Fraction of the hour that has passed: 0

Dòng đ u tiên thì đúng nh mong đ i, nh ng dòng th hai th t kì qu c. Giá tr c a

ư

ư

ị ủ

minute

là 59, và 59

chia cho 60 b ng 0.98333, ch không ph i là 0.

V n

ấ đề ở đây là Java đã th c hi n phép

chia nguyên.

Khi c hai

toán h ng

đ u là s nguyên (toán h ng là nh ng đ i l ng mà toán t th c hi n tính toán),

ạ ượ

ử ự

thì k t qu cũng s là m t s nguyên, và

ế

ộ ố

theo quy đ nh chung, phép chia nguyên

làm tròn xu ng

, ngay

c trong tr

ng h p này khi giá tr sát v i s nguyên phía trên h n.

ườ

ớ ố

ơ

M t cách làm khác là đi tính ph n trăm thay vì m t phân s :

System.out.print(

"Percentage of the hour that has passed: "

);

System.out.println(minute*100/60);

K t qu là:

ế

Percentage of the hour that has passed: 98

M t l n n a k t qu l i đ

c làm tròn xu ng, nh ng l n này đáp s đã g n đúng h n. Đ đ

c k t qu

ộ ầ

ữ ế

ả ạ ượ

ư

ơ

ể ượ ế

chính xác h n, ta có th dùng m t ki u bi n khác, g i là d u ph y đ ng, đ l u tr nh ng giá tr có

ơ

ế

ể ư

ph n th p phân. Ta s ti p t c v n đ này trong ch

ng sau.

ẽ ế ụ ấ

ươ

2.7 Th t th c hi n

ứ ự ự

Khi trong bi u th c có nhi u h n m t toán t , th t đ nh l

ng s tuân theo

ơ

ứ ự ị

ượ

quy t c u tiên

ắ ư

. Gi i

thích đ y đ quy t c u tiên này có th ph c t p, nh ng đ b t đ u, b n ch c n nh :

ắ ư

ứ ạ

ư

ể ắ ầ

ỉ ầ

Các phép nhân và chia ph i đ

c th c hi n tr

c c ng và tr . Vì v y

ả ượ

ướ ộ

2*3-1

b ng 5 ch không ph i 4,

và 2/3-1 đ

c -1, ch không ph i 1 (hãy nh r ng phép chia nguyên

ượ

ớ ằ

2/3 b ng 0).

N u các toán t có cùng đ u tiên thì chúng đ

c đ nh l

ng t trái sang ph i. Vì v y, trong bi u

ế

ộ ư

ượ ị

ượ

th c

ứ minute*100/60, phép nhân đ c th c hi n tr c, cho ra

ượ

ướ

5900/60, và cu i cùng là

98. N u các

ế

phép toán ch y t ph i qua trái, k t qu đã thành

ạ ừ

ế

59*1 t c là

59, đi u này là sai.

B t c khi nào mu n v

t quy t c u tiên (hay khi b n không ch c quy t c này nh th nào), b n có th

ấ ứ

ượ

ắ ư

ư ế

dùng c p ngo c đ n. Bi u th c trong c p ngo c đ n đ

c th c hi n tr

c, b i v y

ặ ơ

ặ ơ

ượ

ướ

ở ậ 2 *(3-1) là 4. B n

cũng có th dùng c p ngo c đ n đ bi u th c tr nên d đ c, nh v i

ặ ơ

ể ể

ễ ọ

ư ớ

(minute * 100) / 60

, ngay c

khi không có nó thì k t qu cũng không đ i.

ế

2.8 Các thao tác v i chu i

Nói chung, b n không th th c hi n các phép toán đ i v i chu i, ngay c khi chu i trông gi ng nh

ể ự

ố ớ

ư

nh ng con s . Vì v y các bi u th c sau đây đ u không h p l :

ợ ệ

bob - 1 "Hello"/123 bob * "Hello"

Ti n th , qua nh ng bi u th c trên b n có phân bi t đ

c li u

ệ ượ ệ bob là s nguyên hay chu i không?

Không. Cách duy nh t đ bi t đ

c ki u c a bi n là nhìn vào n i nó đ

c khai báo.

ấ ể ế ượ

ể ủ

ơ

ượ

Đi u thú v là toán t

+

tác d ng v i chu i, nh ng có l không ho t đ ng theo cách b n mong đ i.

ư

ạ ộ

V i các

String, toán t

ử + có nhi m v

n i

, nghĩa là ghép n i ti p hai toán h ng v i nhau. B i v y

ố ế

ở ậ "Hello,

" + "world." s cho ra chu i

ỗ "Hello, world." còn bob + "ism" thì thêm đuôi ism vào b t kì ch gì

mà bob l u tr , cách đ t tên này này th t ti n trong tay nh ng ng

i quen tính bài bác.

ư

ậ ệ

ườ

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.