Obliczam objętość pokoju i dostałemliczba z 6 miejscami po przecinku. Zastanawiałem się, czy mogę zmniejszyć tę wartość tylko do 2 miejsc po przecinku. Wynikowa liczba dla wolumenu pochodzi z 5 różnych zmiennych, których nie wiem, czy ma to znaczenie w tej sytuacji.
Odpowiedzi:
4 dla odpowiedzi № 1Rozwiązanie @Rashmi zapewnia ładnie zaokrąglone pokaz o wartości zmiennoprzecinkowej.
Nie zmienia wartości oryginalnego numeru.
Jeśli ktoś chce zaokrąglić wartość zmiennoprzecinkową do najbliższej 0.01
posługiwać się round()
#include <math.h>
double d = 1.2345;
d = round(d * 100.0)/100.0;
Uwagi:
Posługiwać się roundf()
dla float
.
Z powodu ograniczeń FP zaokrąglona wartość może nie być dokładnie wielokrotność 0.01
, ale będzie najbliższym numerem DF, na który pozwala dana platforma.
3 dla odpowiedzi № 2
Możesz użyć printf („%. 2f”, 20.233232)
1 dla odpowiedzi nr 3
Może być pływająca funkcja round ()(ha ha) gdzieś w bibliotece matematycznej (nie mam pod ręką referencji C.) Jeśli nie, szybką i brudną metodą byłoby pomnożenie liczby przez 100 (przesunięcie punktu dziesiętnego w prawo o 2), dodaj 0,5, skróć do liczby całkowitej i podziel przez 100 (przesunięcie punktu dziesiętnego w lewo o 2).
0 dla odpowiedzi nr 4
Wartość zmiennoprzecinkowa 0.01
nie można wyrazić w IEEE 754, więc nadal otrzymujesz więcej miejsc po przecinku, niż prosiłeś.
Lepszy sposób: po prostu nie pokaz dodatkowe miejsca po przecinku w twoim programie. Wątpię, żebyś dostał 6 miejsc po przecinku; może to być wartość domyślna dla zwykłego
printf ("too much accuracy in %f!", yourFloat);
Jeśli tak, użyj %.2f
do wyświetlenia.
Nieco gorzej, w zależności od liczbzakres i rodzaj obliczeń, które zamierzasz wykonać: pomnóż liczby zmiennoprzecinkowe przez 100, zaokrąglij i zapisz jako liczbę całkowitą. 100,00% gwarancji, że otrzymasz tylko dwie cyfry dokładności. Uważaj podczas dzielenia (będziesz luźny 2 cyfry, jeśli nie zostaną wykonane ostrożnie) i pomnożenie (ty zdobyć 2).