先来看一段代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
float x=1.0;
double y=2.0;
x=x/3.14159;
x=x*3.14159;
if(x==1.0)
{
printf("YES1\n");
}
else
{
printf("NO1\n");
}
y=sqrt(y);
y=y*y;
if(y==2.0)
{
printf("YES2\n");
}
else
{
printf("NO2\n");
}
return 0;
}
输出为:
这里的x、y分别定义的是float和double类型,目的是判断x、y分别进行先除后乘、先开方再平方之后得到的结果是否与原值相等,结果是否,下面作简要分析:
(float和double型都默认保存6位)
关于第一块命令,即:
x=x/3.14159;
x=x*3.14159;
用1除以3.14159,结果显然是除不尽的,系统默认保留至小数点后六位,而1/3.1415926=0.31830989161357204622903682673559,程序输出为0.318