c语言中如何用程序判断double型的浮点数能精确到几位小数,C语言中浮点数double/float相等判断...
#include
#include /* fabs */
#ifdef _WIN32
// #include
#endif
//輸出的數值不斷遞增,即使將10改成10.0,循環也沒有中止,為什么?
void test_float001()
{
double i;
for(i=0; i != 10; i += 0.1)
{
printf("%.1f\n", i);
#ifdef _WIN32
Sleep(100);
#endif
}
}
//https://www.zhihu.com/question/32304267
//按不同精度輸出
void test_float002()
{
double i;
int j;
for(i = 0, j = 0; j != 101; j++, i += 0.1)
{
printf("%.20lf\t %.1f\n", i, i);
#ifdef _WIN32
Sleep(100);
#endif
}
//因為十進制浮點數無法轉化為精確的二進制浮點數,所以,你得到的結果注定是不精確的,所以累加以后也永遠得不到精確的10.0
}
//1、float double浮點型相等判斷。
/* a == b*/
int dequals(double a, double b)
{
double c=fabs(a-b);//一定要#include labs 針對long整數 fabs針對浮點數,abs針對整數
return c< 0.000001;
}
void test_abs()
{
int c=-3;
float b=-4.3;
printf("c的絕對值:%d\n",abs(c));
printf("b的絕對值:%ld\n",fabs(b));
printf("b的絕對值:%f\n",fabs(b));
printf ("The absolute value of 3.1416 is %f\n", fabs(3.1416));
printf ("The absolute value of -10.6 is %f\n", fabs(-10.6));
}
//C語言中浮點數double/float相等判斷
int main(void)
{
test_abs();
double a=0.89999999999999991000;
double b=0.9;
if(a==b)
{
printf("a==b\n");
}else{
printf("a!=b\n");
}
b=0.89999999999999992200;//后面的精度就是接近值了
if(a!=b)//這里居然是相等的
{
printf("a!=b\n");
}else{
printf("a==b\n");
}
if(dequals(a,b))
{
printf("a==b\n");
}else{
printf("a!=b\n");
}
if (abs(a - b)<0.0001)
{
printf("a==b\n");
}else{
printf("a!=b\n");
}
// test_float001();
test_float002();
return 0;
}
總結
以上是生活随笔為你收集整理的c语言中如何用程序判断double型的浮点数能精确到几位小数,C语言中浮点数double/float相等判断...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 曝京东方已送样iPhone 14屏幕让苹
- 下一篇: cesium获取模型实时坐标_Cesiu