gpt4 book ai didi

c - 只打印 double 的小数位

转载 作者:行者123 更新时间:2023-11-30 16:43:24 24 4
gpt4 key购买 nike

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

double number1 = 0.95;
double number2 = 0.05;

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

最佳答案

类似这样的事情:

#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));
}

但请注意精度问题,您可能会获得比您预期更多的名额。

关于c - 只打印 double 的小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45297041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com