[英]printf() in C: How do I keep my floats/double from rounding?
一直试图让输出给我没有四舍五入的数字,不知道我错过了什么
float NumberOfTrees1;
for (NumberOfTrees1 = 1000.0; NumberOfTrees1 >= 50; NumberOfYears++)
{
NumberOfTrees1 = NumberOfTrees1 - (NumberOfTrees1 * 0.13);
printf("Number of Remaining Trees: %0.1f\n",NumberOfTrees1);
}
我的 Output:
Number of Remaining Trees: 61.7
Number of Remaining Trees: 53.7
Number of Remaining Trees: 46.7
所需 Output:
Number of Remaining Trees: 61
Number of Remaining Trees: 53
Number of Remaining Trees: 46
我知道%0.1f
是给我.7
的原因,但是当我使用%0.0f
时,它会四舍五入我不想要的数字。 一直在使用int
、 double
、 long float
等进行切换,但无济于事。
任何帮助都会很棒,提前谢谢你!!!
Antonin GAVREL的答案应打印所需的 output,但如果您不想将浮点数转换为整数,则可以使用<math.h>
中的double floor (double x)
function。
#include <math.h>
#include <stdio.h>
int main(void)
{
double x = 53.7;
double floored = floor(x);
printf("⌊%0.1lf⌋ = %0.1lf\n", x, floored);
return 0;
}
该程序可以使用-lm
编译并在执行时打印以下内容:
⌊53.7⌋ = 53.0
您可以转换为int
以截断您的号码:
int main(void) {
double d = 53.7;
float f = 46.7f;
int a = (int)d;
int b = (int)f;
printf("%d %d\n", a, b);
}
output:
53 46
或者,正如@user3386109 所建议的,您可以使用 floor(),但您还需要包含 <math.h> header 并使用-lm
编译
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.