come dovrei stampare un float in modo tale che non abbia numeri dietro il punto decimale, ad es. 11,00 dovrebbe essere stampato come 11 ma 11,45 dovrebbe rimanere lo stesso. Il problema è un po 'se la dichiarazione forse. Eventuali suggerimenti?Float to int se num non ha numeri dietro il punto decimale in C
risposta
Ecco la mia soluzione:
#include <stdio.h>
void printDouble(double fp);
int main(void)
{
printDouble(11.0);
printDouble(11.45);
}
void printDouble(double fp)
{
double _fp;
char buffer[40];
int i = 0;
do{
sprintf(buffer, "%.*lf", i, fp);
sscanf(buffer, "%lf", &_fp);
i++;
} while(fp != _fp);
puts(buffer);
}
uscita:
11
11.45
Forse questo è un po 'inefficiente, ma fa lavoro. Ad ogni modo, non è necessario stampare frequentemente numeri a virgola mobile.
% e non mostra una rappresentazione intera di un float, utilizza la notazione scientifica. Pertanto, con fp = 100000.0,% g mostrerà 1.0e + 5, non 100000, che è ciò che l'OP sta richiedendo. –
La presenza nella domanda di istruzioni 'if' è significativa che il problema dovrebbe essere risolto a mano, piuttosto che attraverso una funzione. – edmz
@DaveKnight Risposta modificata –
La prima soluzione che mi viene in mente è il cast. Questo è quello che vorrei fare. Diciamo che la tua variabile è "a", che vuoi stampare.
float a;
if (if (a-(int)a<0.001 || (int)a-a<0.001)) //1st comment explains this
printf("%d", (int)a);
else
printf("%f", a);
Se a è 123.000001, questo non funzionerà. Confronta sempre con un minimo, quindi: 'if (a- (int) a <0.001 || (int) a-a <0.001) ...' –
Grazie per un consiglio, Paul. L'ho completamente dimenticato. –
- 1. C++ float to int
- 2. C++ gamedev: truncating float to int
- 3. calcolo float php 2 punto decimale
- 4. Specificatore Float to String
- 5. C++ controlla se il numero è int/float
- 6. Cast float to int in OCaml
- 7. Dato `int num [7]`, come sono `num`,` & num [0] `,` & num` differiscono?
- 8. R: Int vs Num anomalia nel vettore
- 9. Precisione float Python senza precisione intera dopo il punto decimale
- 10. Stampa float PHP con 3 cifre dopo il punto decimale?
- 11. int num = * (int *) numero; Cosa fa questo?
- 12. TextBox non rispetta il decimale di sistema (punto o virgola)
- 13. printf% f con solo 2 numeri dopo il punto decimale?
- 14. Qual è il punto dietro i sindacati in C?
- 15. Come si converte Int/Decimal in float in C#?
- 16. LISP - cifre dopo il punto decimale
- 17. Aggiungere gli zeri a un float dopo il punto decimale in Python
- 18. String to float in ogg c
- 19. conversione da decimale a int in C#
- 20. Dividi il doppio in due int, un int prima del punto decimale e uno dopo
- 21. Avere un periodo difficile ha deciso il float, double, o decimale
- 22. Come verificare se il numero ha un decimale?
- 23. javascript float from/to bits
- 24. System :: IntPtr to int * in C++/CLI
- 25. Int a decimale di conversione - Inserire punto decimale in posizione specificata
- 26. Formattazione di numeri Così Essi Allinea Sul punto decimale
- 27. Mostra solo il punto decimale se il componente in virgola mobile non è .00 sprintf/printf
- 28. Cast Int to Enum generico in C#
- 29. int vs float efficienza aritmetica in Java
- 30. Precisione arbitraria Numeri float su JavaScript
Cosa hai provato? E quanti decimali vuoi stampare. Supponiamo di avere '1.124' o un settimo' 0.14285714285714285714285714285714'? –
'printf ("% g \ n ", var);' dove 'var' è il nome della variabile. –
Dai uno sguardo [qui] (http://stackoverflow.com/a/5913115/3436922) – LPs