2010-06-09 40 views
5

Tôi đang cố gắng in một giá trị kép. Nó được in ở định dạng matissa và exponent, mà không phải là những gì tôi muốn. Ví dụ, chương trình của tôi in 1.234567E6 cho giá trị 1243567. Làm thế nào tôi có thể in nó 1234657?Làm cách nào để có thể in các giá trị dấu phẩy động mà không có định dạng mantissa/exponent?

+3

Vui lòng đăng một số ** mã ** có liên quan để chúng tôi xem xét. – jjnguy

Trả lời

0

Tôi đã đấu tranh với chính xác cùng một vấn đề, và hai câu trả lời ở đây cung cấp một đầu mối về cách giải quyết vấn đề: sử dụng một định dạng. Cả hai câu trả lời đều không giải thích chính xác thông số nào cần thiết để định dạng một giá trị Double và tránh ký hiệu số mũ.

Có hai tùy chọn. Chúng được mô tả trong tài liệu dưới dạng "d" cho số nguyên thập phân và "f" cho số thập phân. Những gì tôi thực sự cần là định dạng "điểm cố định" và không được mô tả rõ ràng bởi tài liệu, tuy nhiên f sẽ cung cấp cho bạn điểm cố định nếu bạn đặt các thông số chính xác. Nó cũng sẽ cung cấp cho bạn một màn hình số nguyên nếu bạn đặt dấu thập phân thành 0.

Đối với một giá trị đúp 12345678 định dạng mang đến cho bạn kết quả như sau:

Double d = Double.parseDouble("12345678"); 
String r1 = String.format("%f",d);  // 12345678.000000 
String r2 = String.format("%10f",d);  // 12345678.000000 
String r3 = String.format("%5.2f",d);  // 12345678.00 
String r4 = String.format("%5.0f",d);  // 12345678 
String r5 = String.format("%,f",d);  // 12,345,678.000000 
String r6 = String.format("%,5.0f",d); // 12,345,678 
String r7 = String.format("%d",d);  // throws an exception! 

Trên người cuối cùng, ngay cả khi bạn muốn một màn hình số nguyên của số, bạn không thể sử dụng tùy chọn 'd' với một Gấp đôi.

3
BigDecimal.valueOf(double).toPlainString(); 
Các vấn đề liên quan