Bạn không thể giải quyết nó, và tôi khuyên nó không phải là một vấn đề. Đó chỉ là cách Oracle lưu trữ NUMBER
giá trị:với độ chính xác thấp nhất cần thiết. Nếu bạn đã nhập giá là 4.00
nó sẽ được lưu trữ dưới dạng 4
.
Lưu ý rằng Java sẽ không mặc định là hai số thập phân khi hiển thị giá trị. Bạn cần chỉ định số vị trí thập phân.
Và, nếu có thể, tôi sẽ sử dụng BigDecimal
thay vì float
về cái giá. float
loại không chính xác. Một giải pháp thay thế là sử dụng một trong các kiểu số nguyên (int
hoặc long
) và tự quản lý các chữ số thập phân.
Để định dạng giá hiển thị trong mã Java của bạn, hãy sử dụng String.format("%.2f", price)
.
Để định dạng giá trong truy vấn Oracle, hãy sử dụng TO_CHAR
:
SELECT TO_CHAR(price, '999999990.00'), etc.
Chọn số lượng trình giữ chỗ phù hợp nhất với bạn và lưu ý rằng Oracle sẽ đặt thêm một khoảng trống ở đầu kết quả. Nó có nghĩa là giữ một dấu trừ nếu số âm, nhưng đối với số 0 / dương, nó là một khoảng trắng. Để loại bỏ dung lượng, hãy sử dụng FM
sửa đổi trong TO_CHAR
:
SELECT TO_CHAR(price, 'FM999999990.00'), etc.