Как я могу избавиться от нулей, если введен десятичный знак, он печатает десятичный, а если введено целое число, он печатает .00? - PullRequest
0 голосов
/ 20 октября 2019

Эта программа печатает перекрытие двух интервалов. Но проблема в том, что, если я введу, например, числа: 1.1 -1.1 1.1 1.1, он напечатает целое число. Я пытался написать% 1.1f в последней команде printf, но оказалось, что это еще хуже, потому что тогда, если я введу 1 2 1 1, он напечатает 1.0 и 4.0. Как получить правильный отпечаток, если я введу десятичную или целую?

#include <math.h>

int main() {
    float a,b,c,x,derivative;
    printf("Input coefficients a, b i c: ");
    scanf("%f %f %f",&a,&b,&c);
    if((a<(-10)) || (a>10) || (b<(-10)) || (b>10) || (c<(-10)) || (c>10)){
        printf("Coefficients a, b i c do not belong in range of (-10,10).");
        return 1;
    }
    printf("Input point x: ");
    scanf("%f",&x);
    derivative=(2*a*x)+b+(c*0);
    printf("First derivation in point x=%.f je %.f.",x,derivative);
    return 0;
}

1 Ответ

3 голосов
/ 20 октября 2019

Вы можете использовать спецификатор формата "%g" для отображения чисел с плавающей запятой в кратчайший возможный способ:

printf("First derivation in point x=%g je %g",x,derivative);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...