2014-10-20 3 views
1

Я хочу напечатать 0.5 значение в форме «.5» в ANSI C? Я искал веб-и stackoverflow, но я не нашел то, что хочу. Я пробовал как «% .1f», так и «% 0.1f». Но они не работали.Как написать .5 в printf в C?

ответ

2

Там нет такой спецификации в C для печати дробных чисел без 0 в Бегин. BTW вы можете использовать этот код для Вашего случая:

printf(".%d", (int)(0.5*10)); 
1

Попробуйте обходной путь:

double f = 0.5; 

printf(".%u\n" , (unsigned)((f + 0.05) * 10)); 
+0

Каждый раз, когда кто-то впереди меня :) – Seprum

1

После принимать ответ

Если код необходимо, чтобы избежать неприятностей с больших значений с плавающей точкой, INF, NaN или краевыми условиями, как

printf(".%d", (int)(0.46*10)); // prints "0.4" 

Постобработка строки.

void PrintdNoLead0(double x) { 
    const char *format = "%.1f\n"; 
    if (fabs(x) < 1.0) { 
    char buf[10]; // Some buffer large enough for x in range -1<x<1 
    sprintf(buf, format, x); 
    char *p = strchr(&buf[1], '.'); 
    if (p[-1] == '0') { 
     memmove(&p[-1], p, strlen(p)); 
    } 
    fputs(buf, stdout); 
    } else { 
    printf(format, x); 
    } 
} 
+0

Я согласен с вами, так что я сказал в моем решении, что это приемлемо только в его случае (0,5). – Seprum

+1

@Seprum вы могли бы также написать 'printf (". 5 ");' если ваше решение приемлемо только для 0,5 – Igor

Смежные вопросы