gpt4 book ai didi

c - 如何使除数结果不四舍五入?

转载 作者:行者123 更新时间:2023-11-30 18:46:09 30 4
gpt4 key购买 nike

示例(C语言):

#include<stdio.h>

int main()
{
int a, b = 999;
float c = 0.0;
scanf("%d", &a);
c = (float)a/b;
printf("%.3lf...", c);
return 0;
}

如果我输入 998,结果将是 0.999,但我希望结果是 0.998;如何?

最佳答案

看起来您想要截断而不是舍入。

999/998 的数学结果是 0.9989989989...四舍五入到小数点后三位,即 0.999。因此,如果您使用 %.3f 来打印它,这就是您将得到的结果。

在 C 中将 float 转换为整数时,小数部分会被截断。因此,如果您有数字 998.9989989,并将其转换为 int,则会得到 998。因此,您可以通过乘以 1000、截断为 int,然后再次除以 1000 来获得所需的结果:

c = c * 1000;
c = (int)c;
c = c / 1000;

或者你可以将其缩短为

c = (int)(c * 1000) / 1000.;

对于诸如 998/999 ≈ 0.998 之类的问题,这可以很好地工作,但是您已经接近 float 类型的有限精度将开始引入其自身舍入问题的边缘。使用 double 会是更好的选择。 (float 类型的有限精度几乎总是会带来问题。)

关于c - 如何使除数结果不四舍五入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52801933/

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