只打印双倍的小数位

时间:2017-07-25 07:47:59

标签: c printf double decimal

我想只打印double的小数位和C中的printf语句。但如果它们是0,则不是第一个小数位。例如,我的双打是

double number1 = 0.95;
double number2 = 0.05;

number 1应打印为95number 2应打印为5

2 个答案:

答案 0 :(得分:0)

您可以使用sprintf并跳过" 0。"从输出缓冲区。

答案 1 :(得分:0)

这样的事情:

#include <stdio.h>
#include <string.h>

const char *trailingDecimals(char *buffer, size_t bufsize, double val)
{
    static const char *empty = "";
    snprintf(buffer, bufsize, "%.20f", val);
    char *result = strchr(buffer, '.');
    if (!result) return empty;
    while (*++result == '0');
    char *tail = buffer + strlen(buffer) - 1;
    if (*tail == '0')
    {
        while (*--tail == '0');
        *++tail = 0;
    }
    return result;
}

int main(void)
{
    double test = 12.00506;
    char buf[64];
    puts(trailingDecimals(buf, 64, test));
}

但要注意精确度问题,你可能会获得比预期更多的地方。