2008-11-06 40 views

Trả lời

1

Tôi không nghĩ rằng điều này là có thể với các thao tác tiêu chuẩn. (nếu có, tôi muốn được chỉnh sửa và tìm hiểu cách làm)

Tùy chọn duy nhất còn lại của bạn là tự tạo luồng và chặn tất cả số mũ đi vào luồng, định dạng lại bằng tay và truyền chúng vào luồng cơ bản.

Có vẻ như rất nhiều công việc, và mặc dù không phải khoa học tên lửa, cũng không có nhiệm vụ tầm thường.

Về câu hỏi 'tại sao': Tôi biết linux xác định số mũ là hai chữ số tối thiểu, tôi cho rằng Windows chỉ định tối thiểu ba chữ số?

// on linux 
std::cout << std::scientific << 1.23e4 << std::endl 

Cũng thêm một hàng đầu zero:

1.230000e+04 
-1

Nhìn vào tiêu đề iomanip. Nó có rất nhiều chức năng chính xác, vv .. chiều rộng.

+0

Tôi cần cái nào? chiều rộng là chiều rộng đầy đủ, độ chính xác là số chữ số của phần định trị. –

+0

theo như tôi biết không thể với các thuộc tính iomanip mặc định, như bạn đã nói, cả độ chính xác và chiều rộng đều làm điều gì đó khác ... – Pieter

+0

@Pieter: Tôi đề xuất bạn gửi câu trả lời cho dù đó không phải là câu trả lời hy vọng cho = - ( –

1

Là một theo dõi của @ câu trả lời Pieter, tôi đã tìm kiếm trong các nhà điều hành < < (ostream &, kép). Thật vậy, không có trường nào để xác định ý nghĩa hoặc chiều rộng của số mũ. Trên cửa sổ, toán tử < < chuyển tiếp tới sprintf, cũng không có kích thước số mũ.

Đến lượt nó, hàm sprintf (trên Windows) gọi vào _cfltcvt_l, một hàm chúng tôi không có mã nguồn, nhưng chữ ký của nó không cung cấp cho độ chính xác số mũ.

Tôi không biết gì về việc triển khai trên Linux.

Các vấn đề liên quan