C Programmazione

Impostazione della precisione decimale nel linguaggio C

Impostazione della precisione decimale nel linguaggio C

Questo articolo ti mostrerà come impostare la precisione decimale nel linguaggio di programmazione C. Innanzitutto, definiremo la precisione, quindi esamineremo più esempi per mostrare come impostare la precisione decimale nella programmazione C.

Precisione decimale in C

La variabile di tipo intero viene normalmente utilizzata per contenere il numero intero e la variabile di tipo float per contenere i numeri reali con parti frazionarie, ad esempio 2.449561 o -1.0587. La precisione determina l'accuratezza dei numeri reali ed è indicata dal punto (.) simbolo. L'esattezza o l'accuratezza dei numeri reali è indicata dal numero di cifre dopo la virgola decimale. Quindi, precisione significa il numero di cifre menzionate dopo la virgola decimale nel numero float. Ad esempio, il numero 2.449561 ha precisione sei e -1.058 ha precisione tre.

Secondo la rappresentazione in virgola mobile a precisione singola IEEE-754, ci sono un totale di 32 bit per memorizzare il numero reale. Dei 32 bit, il bit più significativo viene utilizzato come bit di segno, i seguenti 8 bit vengono utilizzati come esponente e i successivi 23 bit vengono utilizzati come frazione.

Nel caso della rappresentazione in virgola mobile a doppia precisione IEEE-754, ci sono un totale di 64 bit per memorizzare il numero reale. Dei 64 bit, il bit più significativo viene utilizzato come bit di segno, i successivi 11 bit vengono utilizzati come esponente e i successivi 52 bit vengono utilizzati come frazione.

Tuttavia, quando si stampano i numeri reali, è necessario specificare la precisione (in altre parole, l'accuratezza) del numero reale. Se la precisione non è specificata, verrà considerata la precisione predefinita, i.e., sei cifre decimali dopo la virgola. Negli esempi seguenti, ti mostreremo come specificare la precisione quando si stampano numeri in virgola mobile nel linguaggio di programmazione C.

Esempi

Ora che hai una conoscenza di base della precisione, diamo un'occhiata a un paio di esempi:

    1. Precisione predefinita per float
    2. Precisione predefinita per il doppio
    3. Imposta la precisione per il galleggiante
    4. Imposta la precisione per il doppio

Esempio 1: Precisione predefinita per Float

Questo esempio mostra che la precisione predefinita è impostata su sei cifre dopo la virgola. Abbiamo inizializzato una variabile float con il valore 2.7 e stampata senza specificarne esplicitamente la precisione.

In questo caso, l'impostazione di precisione predefinita assicurerà che vengano stampate sei cifre dopo il punto decimale.

#includere
intero principale()

galleggiante f = 2.7;
printf("\nValore di f = %f \n", f);
printf("Dimensione float = %ld \n", sizeof(float));
restituisce 0;

Esempio 2: Precisione predefinita per Double

In questo esempio, vedrai che la precisione predefinita è impostata su sei cifre dopo il punto decimale per le variabili di tipo doppio. Abbiamo inizializzato una variabile doppia, i.e., d, con il valore 2.7 e l'ho stampato senza specificare la precisione. In questo caso, l'impostazione di precisione predefinita assicurerà che vengano stampate sei cifre dopo il punto decimale.

#includere
intero principale()

doppio d = 2.7;
printf("\nValore di d = %lf \n", d);
printf("Dimensione di double = %ld \n", sizeof(double));
restituisce 0;

Esempio 3: Imposta la precisione per Float

Ora ti mostreremo come impostare la precisione per i valori float. Abbiamo inizializzato una variabile float, i.e., f, con il valore 2.7 e l'ho stampato con varie impostazioni di precisione. Quando menzioniamo “%0.4f" nell'istruzione printf, questo indica che siamo interessati a stampare quattro cifre dopo la virgola.

#includere
intero principale()

galleggiante f = 2.7;
/* imposta la precisione per la variabile float */
printf("\nValore di f (precisione = 0.1) = %0.1f \n", f);
printf("\nValore di f (precisione = 0.2) = %0.2f \n", f);
printf("\nValore di f (precisione = 0.3) = %0.3f \n", f);
printf("\nValore di f (precisione = 0.4) = %0.4f \n", f);
printf("\nValore di f (precisione = 0.22) = %0.22f \n", f);
printf("\nValore di f (precisione = 0.23) = %0.23f \n", f);
printf("\nValore di f (precisione = 0.24) = %0.24f \n", f);
printf("\nValore di f (precisione = 0.25) = %0.25f \n", f);
printf("\nValore di f (precisione = 0.40) = %0.40f \n", f);
printf("Dimensione float = %ld \n", sizeof(float));
restituisce 0;

Esempio 4: imposta la precisione per il doppio

In questo esempio, vedremo come impostare la precisione per i valori doppi. Abbiamo inizializzato una variabile doppia, i.e., d, con il valore 2.7 e l'ho stampato con varie impostazioni di precisione. Quando menzioniamo “%0.52f" nell'istruzione printf, questo indica che siamo interessati a stampare 52 cifre dopo la virgola.

#includere
intero principale()

galleggiante f = 2.7;
/* imposta la precisione per la variabile float */
printf("\nValore di f (precisione = 0.1) = %0.1f \n", f);
printf("\nValore di f (precisione = 0.2) = %0.2f \n", f);
printf("\nValore di f (precisione = 0.3) = %0.3f \n", f);
printf("\nValore di f (precisione = 0.4) = %0.4f \n", f);
printf("\nValore di f (precisione = 0.22) = %0.22f \n", f);
printf("\nValore di f (precisione = 0.23) = %0.23f \n", f);
printf("\nValore di f (precisione = 0.24) = %0.24f \n", f);
printf("\nValore di f (precisione = 0.25) = %0.25f \n", f);
printf("\nValore di f (precisione = 0.40) = %0.40f \n", f);
printf("Dimensione float = %ld \n", sizeof(float));
restituisce 0;

Conclusione

La precisione è un fattore molto importante per rappresentare un numero reale con un'accuratezza adeguata. Il linguaggio di programmazione c fornisce il meccanismo per controllare l'accuratezza o l'esattezza di un numero reale. Tuttavia, non possiamo modificare la precisione effettiva del numero reale. Ad esempio, la parte frazionaria di un numero a virgola mobile a precisione singola a 32 bit è rappresentata da 23 bit e questo è fisso; non possiamo cambiarlo per un particolare sistema. Possiamo solo decidere quanta precisione vogliamo impostando la precisione desiderata del numero reale. Se abbiamo bisogno di maggiore precisione, possiamo sempre utilizzare il numero a virgola mobile a doppia precisione a 64 bit.

Motori di gioco gratuiti e open source per lo sviluppo di giochi Linux
Questo articolo tratterà un elenco di motori di gioco gratuiti e open source che possono essere utilizzati per lo sviluppo di giochi 2D e 3D su Linux....
Tutorial Shadow of the Tomb Raider per Linux
Shadow of the Tomb Raider è la dodicesima aggiunta alla serie Tomb Raider, un franchise di giochi d'azione e avventura creato da Eidos Montreal. Il gi...
Come aumentare gli FPS in Linux?
FPS sta per Fotogrammi al secondo. Il compito dell'FPS è misurare il frame rate nelle riproduzioni video o nelle prestazioni di gioco game. In parole ...