gpt4 book ai didi

c++ - 格式化 float

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:14 27 4
gpt4 key购买 nike

您好,我想格式化 float ,使其显示如下:

小数.分数

其中小数 = 最多 11 位数字和小数 = 最多 9 位数

如果没有小数部分,则不应显示小数部分,小数部分中超过 11 位的数字将以科学形式表示。

谁能帮帮我?

最佳答案

我认为没有这样的内部格式。需要自己格式化(未测试):

void fprintf_float(FILE* f, double value) {
if (-1e11 < value && value < 1e11) {
double d = fabs(value);
const char* sign = d > 0 ? "" : "-";
double ipart, fpart;
char fpartstr[16];
int pos;
fpart = modf(d, &ipart);
snprintf(fpartstr, 16, "%.9f", fpart);
for (pos = 10 /*strlen(fpartstr)-1*/; pos > 0; -- pos)
if (fpartstr[pos] != '0' && fpartstr[pos] != '.')
break;
fpartstr[pos+1] = '\0';
fprintf(f, "%s%.11g%s", sign, ipart, fpartstr+1);
} else {
fprintf(f, "%.10e", value);
}
}

关于c++ - 格式化 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2377372/

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