我有一个用 C++ 编写的程序,它为数学计算生成 C 源代码。我注意到常量在生成的代码中占用了很多空间,并且正在寻找更紧凑的表示形式。
为了生成常量,我现在使用:
double v = ...
cfile << std::scientific << std::setprecision(std::numeric_limits<double>::digits10 + 1) << v;
我很确定这是一种无损表示,但它也非常臃肿。例如,零和一将表示为 0.00000000000000000e+00 和 1.0000000000000000e+00。和“0”。或“1”。携带同样多的信息。
有没有办法以更紧凑但仍无损的方式将常量打印到文件中?对于人类读者来说,它不需要看起来很好,只需在以纯 C 代码存在时进行编译(如果是 C99,我希望它也是有效的 C++)。如果它是可移植的,十六进制可能没问题。
std::fixed
编辑:在代码片段中删除。