Tôi muốn in một giá trị gấp đôi để std::cout
portably (GCC, clang, MSVC++) sao cho đầu ra giống nhau trên tất cả các nền tảng.In ấn di động của số mũ của một đôi để C + + iostreams
Tôi gặp sự cố với định dạng số mũ. sau Chương trình
#include <iostream>
int main()
{
std::cout << 0.1e-7 << std::endl;
return 0;
}
Có đầu ra này với GCC:
1e-08
và đầu ra sau đây với MSVC
1e-008
Làm thế nào tôi có thể làm cho cả hai kết quả đầu ra giống nhau không?
Tôi xin lỗi nếu đây là câu hỏi ngớ ngẩn nhưng tôi chưa tìm thấy câu trả lời. Tất cả các định dạng dường như phát triển xung quanh các định dạng của tất cả mọi thứ trước khi mantissa ...
EDIT: Kết quả của GCC là 1e-08
không 1e-8
(như đã nêu ban đầu) nên nó là phù hợp. Xin lỗi vì sự nhầm lẫn.
EDIT2: Trên thực tế được đổi tên thành "mantissa" thành "số mũ" theo nhận xét của Dietmar. There also is a section on Wikipedia on mantissa vs. significant.
Bạn đã nhìn [thao tác] (http://www.cplusplus.com/reference/iostream/manipulators/)? – razlebe
@razlebe: Tôi không thể tìm thấy câu trả lời khi sử dụng các thao tác. – Manuel
Tôi thấy GCC không phù hợp vì nó in '1.e-08' và' 1.e-18' (hai chữ số) nhưng nó in '1.e-256' (ba chữ số). Tôi không thể tìm thấy một thư viện dòng mà giải quyết điều này (tôi đã thử với iostream của khóa học và Boost.Format). Vì vậy, nếu một người muốn có chiều rộng cố định tăng gấp đôi thì cần phải đặt trước và tăng thêm không gian cho số thứ ba có thể của số mũ. – alfC