检查double的条件是整数不起作用

问题描述 投票:0回答:1

i为整数或小数点后没有非零数字时,该程序应在其小数点后输出零位数。它适用于所有情况,而不是最后一个。谁能帮我解决这个问题?

代码:

#include <stdio.h>
#include<math.h>
int main()
{
    double i,j,k;
    for(i=0;i<=2;i=i+0.2)
    {
        k=3;
        j=i+1;
        while(k--)
        {
            if(fmod(i,1)==0) printf("I=%.0lf J=%.0lf\n",i,j);
            else printf("I=%.1lf J=%.1lf\n",i,j);
            j++;
        }
    }
}

这是ideone sample execution

c algorithm floating-point double
1个回答
0
投票

根据您的精度级别,您可以使用%g或%lg(如下所示)打印最短的可表示项目。在这里,我使用.5大小。

#include <stdio.h>
#include<math.h>
int main()
{
    double i,j,k;
    for(i=0;i<=2;i=i+0.2)
    {
        k=3;
        j=i+1;
        while(k--)
        {
            if(fmod(i,1)==0)
            {
                printf("I=%.5lg J=%.5lg\n",i,j);
            }
            else
            {
                printf("I=%.5lg J=%.5lg\n",i,j);
            }
            j++;
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.