Wyświetlanie z określoną dokładnością

0

Witam
Czy w języku C (podkreślam, nie C++) użytkownik programu może określić z dokładnością do którego miejsca po przecinku ma zostać wyświetlona jakaś liczba? O ile w normalnych programach do wyświetlenia żądanego miejsca po przecinku używamy np %5f, czy istnieje jakiś sposób, aby w trakcie wykonywania programu określić precyzję z jaką będzie wyświetlana liczba?
Będę bardzo wdzięczny za pomoc

0

o_O Zbuduj stringa "%Xf" gdzie X to podana przez użytkownika liczba po prostu a potem przekazuj to jako pierwszy parametr to prinfta. Jak takiego stringa zbudować? Na przykład za pomocą sprintf()

5
#include <stdio.h>
#include <math.h>

int main()
  {
   int i;
   for(i=2;i<12;++i) printf("%*.*f\n",i+2,i,M_PI);
   return 0;
  }
0

Bardzo dziękuję :)

0

Jeszcze jedno pytanie a'propos budowania stringa: napisałem coś takiego:

#include <stdio.h>
int main()
{
	char new[30];
    float flt;
    int count = 0;

    scanf( "%f", &flt);
    printf( "Podales liczbe: %f\n", flt);
    sprintf(new, "%f", flt );
    for(count=0 ;new[count] != '\0'; count++ );
    printf( "%f ma %d cyfr", flt, count-1);
    return 0;
}

jednakże za liczbę cyfr po przecinku zawsze brane jest równo 7, nawet jeżeli podałem liczbę z większą precyzją. Jak naprawić ten błąd?

0

Hmm ta pętla jest dziwnie zakonczona:

for(count=0 ;new[count] != '\0'; count++ );

Jeżeli chcesz liczbę z większą dokłądnościa to możesz zrobić albo double, zamiast float, a drukowanie wtedy zastapisz zamiast %f na %lf.

0
#include <stdio.h>
#include <string.h>

int main()
  {
   char buff[30],*ptr;
   double flt;
   scanf("%lf",&flt);
   printf("Podales liczbe: %lg\n",flt);
   printf("%lg ma %d znaków, ",flt,sprintf(buff,"%lg",flt));
   ptr=strchr(buff,'.');
   if(ptr) printf("%d cyfr oraz %d po przecinku\n",ptr-buff,strlen(ptr)-1);
   else printf("brak znaków po przecinku\n");
   return 0;
  }

http://ideone.com/5QEoPj

1 użytkowników online, w tym zalogowanych: 0, gości: 1