Условие для проверки двойного числа не работает - PullRequest
0 голосов
/ 18 февраля 2019

Эта программа должна была выводить ноль цифр после своей десятичной точки, когда 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

1 Ответ

0 голосов
/ 19 февраля 2019

В зависимости от вашего уровня точности, вы можете использовать% 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++;
        }
    }
}
...