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
ề
ị
ử
+
có 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.
ư
ữ
ặ
ậ ệ
ữ
ườ