相关疑难解决方法(0)

浮点比较中的问题

void main()
{
    float f = 0.98;
    if(f <= 0.98)
        printf("hi");
    else
        printf("hello");
    getch();
}
Run Code Online (Sandbox Code Playgroud)

我在这里遇到这个问题.使用不同的浮点值得到不同的结果.为什么会这样?

c floating-point floating-point-conversion

6
推荐指数
2
解决办法
2875
查看次数

C中浮动值混淆

我的代码是

void main()
{
    float a = 0.7;
    if (a < 0.7)
        printf("c");
    else
        printf("c++");
} 
Run Code Online (Sandbox Code Playgroud)

它打印C,这很好,a被视为双常数值,其值将0.699999小于0.7.

现在,如果我将值更改为" 0.1,0.2,0.3直到0.9" a并且if condition此时它还会打印C++,除此之外0.7 and 0.9,两者都相等或者更大.

为什么这个概念不考虑所有价值?

c floating-point floating-point-conversion

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

有人能简单地解释一下这个功能吗?

我有以下代码,

float a = 0.7;
if(0.7 > a)
    printf("Hi\n");
else
    printf("Hello\n");   //Line1
Run Code Online (Sandbox Code Playgroud)

float a = 0.98;
if(0.98 > a)
    printf("Hi\n");
else
    printf("Hello\n");   //Line2
Run Code Online (Sandbox Code Playgroud)

这里line1输出Hi但Line2输出Hello.我假设有一个关于双常数和浮点数的标准,即它们中的任何一个在评估时会变大.但是这两个代码澄清了我,当双常数变大并且其他时候浮点变大时,情况可能会出现.这背后有没有四舍五入的问题?如果是,请解释我.我非常需要这个明确的...感谢提前

c floating-point double rounding

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

浮点比较 C 的差异

float a = 0.7;
if(a<0.7)
  printf("true");
else
  printf("false");
Run Code Online (Sandbox Code Playgroud)

OUTPUT : true

现在,如果我将 a 的值更改为 1.7,那么

float a = 1.7;
if(a<1.7)
  printf("true");
else
  printf("false");
Run Code Online (Sandbox Code Playgroud)

OUTPUT : false

由于 0.7 被视为 double (HIGH PRECISION) 而 a 是浮点数 (LESS PRECISION),因此 a < 0.7 ,在第二种情况下它应该再次相同,因此它也应该打印 true。为什么这里的输出不同?

PS:我已经看过这个链接了。

c floating-point

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