Tôi có một chương trình được viết bằng C++ đang tạo mã nguồn C cho phép tính toán học. Tôi đã nhận thấy rằng các hằng số chiếm rất nhiều không gian trong mã được tạo ra và đang tìm kiếm một đại diện nhỏ gọn hơn.Biểu diễn không mất mát nhỏ gọn của hằng số dấu chấm động trong C/C++
Để tạo hằng, bây giờ tôi đang sử dụng:
double v = ...
cfile << std::scientific << std::setprecision(std::numeric_limits<double>::digits10 + 1) << v;
Tôi khá chắc chắn rằng đây là một đại diện lossless, nhưng nó cũng rất cồng kềnh. Ví dụ một số không và một số sẽ được biểu diễn như một cái gì đó như 0,0000000000000000e + 00 và 1,0000000000000000e + 00. Và "0." hoặc "1." mang theo nhiều thông tin.
Có cách nào để in các hằng số để tập tin theo cách gọn nhẹ hơn nhưng vẫn không bị mất? Nó không cần phải xem xét tốt cho một người đọc của con người, chỉ cần biên dịch khi có mặt trong mã C đơn giản (nếu C99, tôi thích nếu nó cũng hợp lệ C++). Hệ thập lục phân có thể là ok nếu nó là di động.
EDIT: Đã xóa std::fixed
trong đoạn mã.
Đã lâu rồi, nhưng nhìn [ở đây] (http://en.wikipedia.org/wiki/Huffman_coding), mã hóa Huffman có thể phù hợp với bạn. –
Có lẽ tôi đã hiểu lầm, nhưng sẽ không loại bỏ các số không theo sau là giải pháp? – jogojapan
Liên quan: http://stackoverflow.com/questions/4738768/printing-double-without-losing-precision – jogojapan