jak mam wydrukować float tak, jakby nie miał liczb za kropką dziesiętną np. 11.00 należy wydrukować jako 11, ale 11,45 powinno pozostać bez zmian. Problem może być, jeśli może być stwierdzeniem. Jakieś sugestie?Float do int, jeśli num nie ma cyfr za kropką dziesiętną w C
Odpowiedz
Oto moje rozwiązanie:
#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);
}
wyjściowa:
11
11.45
Być może jest to nieco nieefektywne, ale robi pracy. W każdym razie nie musisz często drukować liczb zmiennoprzecinkowych.
% e nie pokazuje liczby całkowitej float, używa notacji naukowej. Dlatego też, przy fp = 100000,0,% g wyświetli 1.0e + 5, a nie 100000, o co prosi OP. –
Obecność w pytaniu "if" ma znaczenie, że problem powinien zostać rozwiązany ręcznie, a nie poprzez funkcję. – edmz
@DaveKnight Odpowiedź modified –
Pierwsze rozwiązanie, które przychodzi mi do głowy, zostało obsadzone. Oto co bym zrobił. Powiedzmy, że zmienna to "a", którą chcesz wydrukować.
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);
Jeśli a jest 123.000001, to nie zadziała. Zawsze porównuj do pewnego minimum, więc: 'if (a- (int) a <0.001 || (int) a-a <0.001) ...' –
Dziękuję za poradę, Paul. Całkowicie o tym zapomniałem. –
- 1. Rzucanie int do float w F #
- 2. C# char do int
- 3. Problem konwersji z int na float
- 4. niejawna konwersja float/int
- 5. Swift - Podziel Int do jego indywidualnych cyfr
- 6. NSNumber vs Int, Float w Swift Dictionary
- 7. JSON stringify konwersja float do int
- 8. Dlaczego grupa nie sumuje konwersji boolean na int lub float?
- 9. Konwersja Haskell Float na Int
- 10. Zastępcza wartość int, float i decimal za pomocą Json.NET
- 11. Mnożenie int i float w javascript
- 12. Python float to int konwersji
- 13. Jak deserializowania json ciąg do listy obiektów w C# kropką
- 14. Konwertuj int na BigDecimal z dziesiętną - Java
- 15. Bity nie pochodzi od Num?
- 16. Parsowanie int lub float z FParsec
- 17. Jak przekonwertować ciąg na float lub int?
- 18. Brak automatycznego przesyłania od `int` do` float` z funkcją szablonu
- 19. Iterowanie za pomocą cyfr w liczbie całkowitej w C
- 20. CAST niepoprawnie rzucający float do varchar
- 21. Zastępowanie przecinkiem kropką i kropką przecinkami
- 22. Jak sprawdzić, czy liczba ma dziesiętną?
- 23. Wybierz sparsowany int, jeśli ciąg znaków można sparsować do int
- 24. Szybki produkt z kropką za pomocą intrisics SSE/AVX
- 25. Najprostszy sposób przekazywania float [] [] do C++ za pośrednictwem JNI
- 26. Jak wykonać arytmetykę między int i float w Swift?
- 27. Parse Float ma limit zaokrąglania? Jak mogę to naprawić?
- 28. Tensorflow - casting od int do float dziwne zachowanie
- 29. ma int mieć operatora ==
- 30. Int do Char w C#
Czego próbowałeś? I ile miejsc dziesiętnych chcesz wydrukować. Załóżmy, że masz '1.124' lub jeden siódmy' 0.14285714285714285714285714285714'? –
'printf ("% g \ n ", var);' gdzie 'var' jest nazwą zmiennej. –
Spójrz [tutaj] (http://stackoverflow.com/a/5913115/3436922) – LPs