Tôi gặp sự cố. Trong trang jsp của tôi, tôi có một trường văn bản chấp nhận giá trị tiền tệ. Khi tôi nhập một giá trị như 66777764
, nó sẽ trở thành 6.6777764E7
trong trường văn bản của tôi bất cứ khi nào có lỗi xác thực. Tôi biết điều này sẽ không ảnh hưởng đến giá trị được lưu trong cơ sở dữ liệu nhưng tôi nghĩ rằng nó gây hiểu lầm/gây nhầm lẫn cho người dùng. Hãy giúp tôi. Cảm ơn trước.Tại sao java chuyển đổi hai thành dạng số mũ
Trả lời
Có vẻ như bạn giữ số của mình là double
vì vậy 66777764
thực sự là 66.777764.0
và nó hiển thị những gì bạn có.
Bạn có thể sử dụng DecimalFormat để định dạng hiển thị số lượng như bạn muốn, ví dụ:
double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d)); // will print 1.23
này sẽ hiển thị số với 2 chữ số sau dấu (66777764.00
), có rất nhiều lựa chọn cho định dạng, kiểm tra tài liệu để biết thông tin.
Các câu trả lời BigDecimal vẫn là các khuyến nghị tốt về tiền. –
Bạn chính xác về phần tiền tệ –
Sử dụng BigDecimal để giữ giá trị bằng tiền.
double d = 66777764d;
BigDecimal bd = new BigDecimal(d);
System.out.println(bd);
Đọc the answer of this question để tìm hiểu lý do bạn nên sử dụng BigDecimal.
Và tôi muốn add: Không bao giờ sử dụng số dấu chấm động, tức là double hoặc float trong Java, để giữ các giá trị tiền tệ. – jmg
theo BigDecimal
BigDecimal bd = new BigDecimal(inputVal);
System.out.println(bd);
Đó là tất cả trong cách bạn đang định dạng 'double'. Tìm kiếm "[java format double] (https://www.google.com/search?q=java+format+double)" và bạn sẽ nhận được rất nhiều thông tin. Ngoài ra, ** không bao giờ ** sử dụng 'double' (hoặc điểm nổi khác cho các giá trị tiền tệ. –
Dán mã, vui lòng –