【发布时间】:2016-08-25 15:43:38
【问题描述】:
我对 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。稍后在我的代码中,我将其用作 比较双精度数
int tointn(double in,int n)
{
int i = 0;
i = (int)round(in*pow(10,n));
return i;
}
这个函数显然在我的测试中不稳定。这里有冗余吗?嗯...我不只是在寻找答案,而是对这个主题有更好的理解。
【问题讨论】:
-
返回值始终为
double或float。如果您输入的数字类似于42.000,即使您传递了double或float,这也被认为是完整的。 “不稳定”是什么意思?如果您要比较doubles,您还应该注意机器 epsilon 的浮点值。 -
你可以从你发布的那个人的第一部分看到
round()函数返回一个double。 -
当 n 很大时,您不能依赖
pow(10,n)的精度。在您的测试中,n的通常/最大值是多少? -
还是不清楚。如果
42.000存储为浮点数或双精度数,则其含义与将42.000存储为int 完全不同。 -
是的,它说的是“整数”而不是
int。整数是整数,不是语言类型。