gpt4 book ai didi

c - 在 C 中使用 round() 函数

转载 作者:太空狗 更新时间:2023-10-29 17:02:22 25 4
gpt4 key购买 nike

我对 C 中的 round() 函数有点困惑。

首先,男人说:

SYNOPSIS
#include <math.h>
double round(double x);

RETURN VALUE
These functions return the rounded integer value.
If x is integral, +0, -0, NaN, or infinite, x itself is returned.

返回值是 double/float 还是 int

其次,我创建了一个函数,它首先进行循环,然后转换为 int。在我的代码的后面,我将它用作比较 double

的手段
int tointn(double in,int n)
{
int i = 0;
i = (int)round(in*pow(10,n));
return i;
}

这个函数在我的测试中显然不稳定。这里有冗余吗?好吧...我不只是在寻找答案,而是在寻找对这个主题的更好理解。

最佳答案

手册页中的措辞应按字面意思阅读,即在数学意义上。 “x 是整数”这句话的意思是 xZ 的一个元素,而不是 x 的数据类型是 int.

double 转换为 int 可能很危险,因为 double 可以容纳的最大任意整数值是 2^52(假设 IEEE 754 conforming binary64 ),int 可以容纳的最大值可能更小(在 32 位架构上它主要是 32 位,在某些 64 位上也是 32 位架构)。

如果你只需要十的幂,你可以自己用这个小程序测试一下:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(){
int i;
for(i = 0;i < 26;i++){
printf("%d:\t%.2f\t%d\n",i, pow(10,i), (int)pow(10,i));
}
exit(EXIT_SUCCESS);
}

您应该使用返回正确整数数据类型的函数,而不是转换,例如:lround(3)

关于c - 在 C 中使用 round() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39149543/

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