我得到了一个数字列表(int
和double
s),我需要将其作为字符串导出到缓冲区。必须事先保留缓冲区。出于速度和大小的原因,我不想创建字符串,测量其大小,然后再次将其创建到缓冲区中。不,使用过的系统不允许创建整个字符串并在之后复制它。
答案 0 :(得分:2)
对于整数,您需要floor(log10(number)) + 1
个十进制数字(根据需要调整为0并签名)。
对于双打,情况有点复杂 - 这实际上取决于你想要如何表示它们。最重要的是,你是否介意在小数点后跟踪0
?科学记数法是一种选择吗?
解决此问题的一种方法是:您需要17 decimal digits after the decimal point在字符串中表示IEEE double
,以便可以明确地重建它。因此,请始终保留这17个数字加上句点,并使用上面的整数公式作为整数部分。