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

Ch

ng 3: Ph

ng th c

ươ

ươ

ứ r ng

Tr v

ở ề M c l c

ụ ụ cu n sách

3.1 D u ph y đ ng

ch

ng tr

c ta đã g p tr c tr c khi tính toán nh ng s không nguyên. Ta đã s a m t cách t m b

Ở ươ

ướ

b ng vi c tính s ph n trăm thay vì s th p phân, nh ng m t gi i pháp t ng quát h n s là dùng s có

ố ậ

ư

ơ ẽ

d u ph y đ ng, đ bi u di n đ

c c s nguyên l n s có ph n th p phân. Trong Java, ki u d u ph y

ể ể

ượ ả ố

ẫ ố

đ ng có tên

double, là ch g i t t c a “double-precision” (đ chu n xác kép).

ữ ọ ắ ủ

B n có th t o nên các bi n ph y đ ng r i gán giá tr cho chúng theo cú pháp gi ng nh ta đã làm v i

ể ạ

ế

ư

nh ng ki u d li u khác. Ch ng h n:

ữ ệ

double

pi;

pi = 3.14159;

Vi c khai báo m t bi n đ ng th i gán giá tr cho nó cũng h p l :

ế

ợ ệ

int

x = 1;

String empty =

""

;

double

pi = 3.14159;

Cú pháp này r t thông d ng; vi c k t h p gi a khai báo và gán đôi khi còn đ

c g i là phép

ệ ế ợ

ượ ọ

kh i t o

ở ạ .

M c dù các s ph y đ ng r t h u ích nh ng chúng cũng là ngu n gây nên r c r i, vì d

ng nh có ph n

ấ ữ

ư

ắ ố

ườ

ư

trùng nhau gi a các s nguyên và s ph y đ ng. Ch ng h n, n u b n có giá tr

ế

ị 1, thì đó là s nguyên, s

ph y đ ng, hay c hai?

Java phân bi t giá tr s nguyên

ị ố

1 v i giá tr ph y đ ng

ộ 1.0, dù r ng chúng có v cùng là m t s . Chúng

ộ ố

thu c v hai ki u d li u khác nhau, và nói ch t ch thì b n không đ

c phép gán giá tr ki u này cho

ộ ề

ữ ệ

ượ

ị ể

m t bi n ki u khác. Ch ng h n, câu l nh sau là h p l :

ế

ợ ệ

int

x = 1.1;

vì bi n v trái là

ế ở ế

int còn giá tr v ph i là

ị ở ế

double. Nh ng r t d quên m t quy t c này, đ c bi t là vì

ư

ấ ễ

có nh ng n i mà Java s t đ ng chuy n t m t ki u này sang ki u khác. Ch ng h n:

ơ

ẽ ự ộ

ể ừ ộ

double

y = 1;

v lý thì không h p l , nh ng Java v n cho phép đi u này nh cách t đ ng chuy n đ i

ợ ệ

ư

ự ộ

t

ừ int sang double. S d dãi này khá ti n l i, song có th g p v n đ , ch ng h n:

ự ễ

ệ ợ

ể ặ

double

y = 1 / 3;

B n có th trông đ i r ng bi n

ợ ằ

ế y nh n giá tr

ị 0.333333, v n là m t giá tr ph y đ ng hoàn toàn h p l ,

ợ ệ

song th c ra nó nh n đ

c

ượ 0.0. Lý do là bi u th c v ph i là t s gi a hai s nguyên, vì v y Java th c

ứ ế

ỉ ố ữ

hi n phép

chia nguyên, và cho giá tr s nguyên b ng

ị ố

ằ 0. Chuy n thành d ng s ph y đ ng, k t qu

ế

là 0.0.
M t cách gi i quy t v n đ này (khi b n đã hình dung ra) là làm cho v ph i tr thành m t bi u th c

ế ấ

ế

ả ở

ch a s ph y đ ng:

ứ ố

double

y = 1.0 / 3.0;

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.