void main()
{
float f = 0.98;
if(f <= 0.98)
printf("hi");
else
printf("hello");
getch();
}
Run Code Online (Sandbox Code Playgroud)
我在这里遇到这个问题.使用不同的浮点值得到不同的结果.为什么会这样?
我的代码是
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,两者都相等或者更大.
为什么这个概念不考虑所有价值?
我有以下代码,
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.我假设有一个关于双常数和浮点数的标准,即它们中的任何一个在评估时会变大.但是这两个代码澄清了我,当双常数变大并且其他时候浮点变大时,情况可能会出现.这背后有没有四舍五入的问题?如果是,请解释我.我非常需要这个明确的...感谢提前
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:我已经看过这个链接了。