Avatar
1
Nguyen Thai Son Beginner
Datatype of Money
Anh ơi, Tại sao số tiền như là 3.25 USD lại không bao giờ được phép chọn kiểu là float hay double trong database
  • Answer
Remain: 5
1 Answer
Avatar
tvd12 Beginner
tvd12 Beginner
Bởi vì máy tính nó chỉ hiểu byte bit và byte bit cũng chỉ được chuyển sang dạng số nguyên, vậy nên đối với số thực có chứa phần nguyên và phần thập phân thì máy tính không hiểu được.

Chính vì vậy người ta phải nghĩ ra IEEE-754: chuẩn dấu phải động Em có thể đọc, nếu không hiểu lại tạo câu hỏi nhé. Tuy nhiên cái chuẩn này nó cũng chỉ là dạng biểu diễn, nó cũng không chính xác được, chính vì vậy khi cộng trừ nhân chia cũng không chính xác, ví dụ:

double num1 = 0.1;
double num2 = 0.2;
double incorrectSum = num1 + num2;
System.out.println("Incorrect Sum: " + incorrectSum);

Sẽ in ra: Incorrect Sum: 0.30000000000000004

Để lưu liệu tiền tệ thông thường sẽ dùng BigDecimal

  • 0
  • Reply