我想比较浮点值以确定列表中的最大数字。浮点数的精度是固定的,小数点后是6。
我应该只将它们作为整数进行比较,如果它们相等,那么去挖掘小数点后的值吗?
答案 0 :(得分:2)
比较浮点数的最简单方法是使用<
运算符,如此
if(float1 < float2)
printf("%f < %f\n", float1, float2);
答案 1 :(得分:1)
答案 2 :(得分:0)
这取决于你没有告诉我们的事情。
等
由于您在float数组中有值,我会执行以下操作:
float biggest(float * values, int num)
{
int i;
float curmax;
if (num == 0) return NAN;
curmax = values[0];
for (i=1; i < num; i++) {
if (values[i] > curmax) curmax = values[i];
}
return curmax;
}
答案 3 :(得分:0)
如果你想找到最大的数字,为什么你需要担心比较平等?
答案 4 :(得分:0)
执行此操作的代码如下所示:
float MinFloatArray(float *a, int n)
{
int i;
float result = MAX_FLOAT;
for (i=0; i<n; i++)
if (a[i]<result)
result = a[i];
return result;
}
答案 5 :(得分:0)
以下文章提供了比较浮点值的各种替代方案。 http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
通常,找到浮点数之间的差异并检查差异是否在精度限制范围内,有助于比较浮点数。 但正如前面提到的那样,没有完美的答案和实现,因为相邻浮点数之间的差异随着幅度而变化。因此,如果您知道程序将使用的值范围,那么您可以选择适当的实现进行比较。