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.40000uważane za prawidłowe dane wyjściowe?
.0część zostanie podana dla liczb całkowitych? Również 0nie jest pozytywne.
19zaokrągla do, 20ale 0.19zaokrągla do 0? Dlaczego?