如何在 C 中打印没有额外零数字的浮点数
How to print a float number without extra zero digits in C
当我用“%f”打印一个浮点数时,它打印了一个 6 位数的浮点数,但我不想打印额外的零。我可以使用例如“%.3f”来打印 3 位数字,但我想打印一个带有随机数字的浮点数,使用“%.{number}f”不是我的答案。例如:
#include <stdio.h>
int main()
{
float a, b;
printf("Please enter a number: ");
scanf("%f", &a);
printf("Please enter another number: ");
scanf("%f", &b);
printf("%f", a / b);
return 0;
}
a/b 可以有偶数位小数。当然,我的问题也适用于double和long double。
这是一段打印 n non-zero 十进制数字的代码:
#include <stdio.h>
#include <math.h>
int main(void)
{
int n;
float a, b;
scanf("%f %f %d", &a, &b, &n);
float result = a / b;
printf("%d", (int)result);
int decimal = (int)trunc(result * pow(10, n)) % (int)pow(10, n);
if (decimal != 0)
while (decimal % 10 == 0)
decimal /= 10;
printf(".%d\n", decimal);
}
有很多方法可以去除多余的零。
最简单的方法是在 printf
语句中使用 %g
作为格式说明符。例如。 printf("%g",a/b);
。这是删除小数点后多余的零。
您可以使用printf("%.0d%.4g\n", (int)(a/b)/10, (a/b)-((int)(a/b)-(int)(a/b)%10));
。
您可以使用单独的函数来删除多余的零,但这是一个繁琐的过程。先把所有的数字转成字符串,去掉末尾不需要的零。
您还可以使用 %.2f
格式说明符来减少零。例如。 printf("%.2f",a/b);
- 这可以用于您想要打印小数点后的确切位数的地方。 %.<the number of digits to be printed after decimal point>f
.
当我用“%f”打印一个浮点数时,它打印了一个 6 位数的浮点数,但我不想打印额外的零。我可以使用例如“%.3f”来打印 3 位数字,但我想打印一个带有随机数字的浮点数,使用“%.{number}f”不是我的答案。例如:
#include <stdio.h>
int main()
{
float a, b;
printf("Please enter a number: ");
scanf("%f", &a);
printf("Please enter another number: ");
scanf("%f", &b);
printf("%f", a / b);
return 0;
}
a/b 可以有偶数位小数。当然,我的问题也适用于double和long double。
这是一段打印 n non-zero 十进制数字的代码:
#include <stdio.h>
#include <math.h>
int main(void)
{
int n;
float a, b;
scanf("%f %f %d", &a, &b, &n);
float result = a / b;
printf("%d", (int)result);
int decimal = (int)trunc(result * pow(10, n)) % (int)pow(10, n);
if (decimal != 0)
while (decimal % 10 == 0)
decimal /= 10;
printf(".%d\n", decimal);
}
有很多方法可以去除多余的零。
最简单的方法是在
printf
语句中使用%g
作为格式说明符。例如。printf("%g",a/b);
。这是删除小数点后多余的零。您可以使用
printf("%.0d%.4g\n", (int)(a/b)/10, (a/b)-((int)(a/b)-(int)(a/b)%10));
。您可以使用单独的函数来删除多余的零,但这是一个繁琐的过程。先把所有的数字转成字符串,去掉末尾不需要的零。
您还可以使用
%.2f
格式说明符来减少零。例如。printf("%.2f",a/b);
- 这可以用于您想要打印小数点后的确切位数的地方。%.<the number of digits to be printed after decimal point>f
.