相关疑难解决方法(0)

浮点数和双变量的比较

可能重复:浮点数与浮点字面值的比较中浮点数
和双奇数输出之间的差异

我正在使用visual C++ 6.0,在程序中我比较float和double变量例如这个程序

#include<stdio.h>
int main()  
{    
    float a = 0.7f;
    double b = 0.7; 
    printf("%d %d %d",a<b,a>b,a==b);
    return 0;
 }  
Run Code Online (Sandbox Code Playgroud)

我得到1 0 0作为输出

并为

#include<stdio.h>
int main()  
{    
    float a = 1.7f;
    double b = 1.7; 
    printf("%d %d %d",a<b,a>b,a==b);
    return 0;
 }  
Run Code Online (Sandbox Code Playgroud)

我输出0 0 0.

请告诉我为什么我得到这些奇怪的输出,有没有办法在同一个处理器上预测这些输出.如何比较C中的两个变量?

c floating-point double comparison

4
推荐指数
1
解决办法
2万
查看次数

关于C中的浮点数和比较运算符

int main()
{
    float lfResult = 19.893196;
    if(lfResult == 19.893196)
        printf("Works");
    else
        printf("does not work");

    getch();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:不起作用

为什么if病情会失败?

c floating-point

4
推荐指数
1
解决办法
124
查看次数

3
推荐指数
1
解决办法
500
查看次数

小于(<)比较浮动与c中的if语句

情况1

float a = 0.6;

if (a < 0.6)
{
    printf("c");
}
else
{
    printf("c#");
}
Run Code Online (Sandbox Code Playgroud)

输出c#

案例2

float a = 0.9;

if (a < 0.9)
{
    printf("c");
}
else
{
    printf("c#");
}
Run Code Online (Sandbox Code Playgroud)

输出c

现在问题是为什么?

c floating-point comparison

3
推荐指数
2
解决办法
6819
查看次数

为什么float的相同值和使用函数atof转换为float的字符串不相等?

我在C中编写了一个程序,当我比较浮点数和使用函数atof转换为float的字符串的相同值时,得到NOT EQUAL.

    #include<stdio.h>

    main(){

            char str[10] = "54.23" ;
            float val = 54.23 ;


            if( atof(str) == val )
                 printf("\nconverted correctly");
            else
                 printf("\nThen What is the use of atof\n ");


       }
Run Code Online (Sandbox Code Playgroud)

本程序显示输出:"那么atof有什么用"请告诉我为什么这个匿名行为会被这个程序显示出来?

c

2
推荐指数
1
解决办法
757
查看次数

2
推荐指数
1
解决办法
68
查看次数

解释这个浮点行为

请解释为什么以下代码片段的行为不同.

#include<stdio.h>
int main(){
 float a=0.1;
 if(a<0.1)
  printf("less");
 else 
  printf("greater than equal");
getchar();
}
Run Code Online (Sandbox Code Playgroud)

Output:greater than equal

 #include<stdio.h>
 int main(){
 float a=0.7;
 if(a<0.7)
  printf("less");
 else 
  printf("greater than equal");
getchar();
}
Run Code Online (Sandbox Code Playgroud)

Output:less 与我的预期相反.

PS:这不是功课.

c floating-point

1
推荐指数
1
解决办法
312
查看次数

双重和浮动比较

根据这篇文章,当比较float和double时,float应被视为double.以下程序似乎没有遵循此声明.这种行为看起来非常不可预测.这是我的计划:

void main(void)
{
    double a = 1.1;  // 1.5
    float b = 1.1;   // 1.5
    printf("%X  %X\n", a, b);
    if ( a == b)
        cout << "success " <<endl;
    else
        cout << "fail" <<endl;
}
Run Code Online (Sandbox Code Playgroud)
  • 当我运行以下程序时,我显示"失败".
  • 但是,当我将a和b更改为1.5时,它会显示"成功".

我还打印了值的十六进制表示法.它们在两种情况下都不同.我的编译器是Visual Studio 2005

你能解释一下这个输出吗?谢谢.

c++ floating-point double floating-point-precision

1
推荐指数
2
解决办法
1435
查看次数

为什么浮点数为5的最后一个十进制数字在浮点数比较中给出了正确的输出,而在其他情况下它不是?

我已经问过这个问题了,但这个特定子部分的答案对我来说并不清楚.请参阅以下代码:

float f=2.5;
if (f==2.5)
printf("abc");
else
printf("xyz"); //prints abc
Run Code Online (Sandbox Code Playgroud)

我知道如果我们2.2取而代之2.5,它将输出相反的值,因为float被视为double和浮点nos.他们真的不应该等同吗?我想知道为什么有一个例外,数字有他们的最后一个十进制数字5.

c c++ floating-point precision

1
推荐指数
2
解决办法
134
查看次数

python float值和c float值有什么区别?

我正在用两种不同的语言来回答同样的问题。得到了不同的结果。需要帮助以了解为什么会这样吗?

我用python编写了相同的代码,得到的结果与C预期的结果不同。

代码1:

{
  float f = 0.1;
  if (f == 0.1)
    printf("YES\n");
  else
    printf("NO\n");
  return 0;
}

Run Code Online (Sandbox Code Playgroud)

代码2:

f = float()
f = 0.1
if (f == 0.1):
    print("YES")
else:
    print("NO")
Run Code Online (Sandbox Code Playgroud)

两者必须提供与否相同的输出。但是只有C给出了预期的输出,而Python给出的是YES。

c python

1
推荐指数
1
解决办法
69
查看次数