Satysfakcjonujące zaokrąglanie
Wiesz, kiedy jesteś w klasie naukowej i poprosiłeś o zaokrąglenie do 2 sig fig, ale twoja odpowiedź brzmi 5.2501...
? Powinieneś zaokrąglić do 5.3
, ale to po prostu takie niezadowalające! Zaokrąglając do 5.3
, otrzymujesz całe 0,05, co stanowi dużą kwotę w porównaniu do 0,1 (wartość miejsca, do której zaokrąglasz)! Pomóż mi więc w satysfakcjonujący sposób.
Aby zaokrąglić w sposób satysfakcjonujący, należy zaokrąglić pierwszą napotkaną cyfrę, która powoduje stosunkowo mały błąd - mniej niż połowę maksymalnego błędu możliwego podczas zaokrąglania. Zasadniczo musisz zaokrąglać za każdym razem, gdy napotkasz 0, 1, 8 lub 9. Jeśli to się nigdy nie zdarzy, zwróć dane wejściowe bez zmian. Nie zaokrąglaj wiodących zer lub jedynek - to po prostu nie jest satysfakcjonujące.
Wejście
Ciąg lub wartość zmiennoprzecinkowa reprezentująca nieujemną liczbę dziesiętną.
Wynik
Ta sama liczba dziesiętna zaokrąglona w sposób zadowalający, zarówno w formacie ciągowym, jak i zmiennoprzecinkowym.
Przykłady
Input -> Output
0 -> 0
0.5 -> 0.5
0.19 -> 0
0.8 -> 1
5.64511 -> 5.645
18.913 -> 20
88.913 -> 100
36.38299 -> 36.4
621 -> 620
803.22 -> 1000
547.4726 -> 547.4726
To wyzwanie dla golfa , więc wygrywa najkrótszy kod!
036.40000
uważane za prawidłowe dane wyjściowe?
.0
część zostanie podana dla liczb całkowitych? Również 0
nie jest pozytywne.
19
zaokrągla do, 20
ale 0.19
zaokrągla do 0
? Dlaczego?