Spędziłem niezliczoną ilość godzin na badaniu, czytaniu, testowaniu i ostatecznie zdezorientowany i przerażony brakiem najbardziej podstawowej koncepcji Pythona: Formatowanie wyniku dziesiętnego na ciąg.Format Python Obiekt dziesiętny do określonej precyzji
Załóżmy mamy pewne ciągi lub dziesiętne obiekty z następujących wartości:
0.0008
11.1111
222.2222
3333.3333
1234.5678
Celem jest po prostu ustawić dokładność po przecinku do drugiego miejsca po przecinku. Np. 11.1111
zostałby sformatowany jako 11.11
i 1234.5678
jako 1234.57
.
wyobrażam sobie kod podobny do poniższego:
import decimal
decimals = [
decimal.Decimal('0.0008'),
decimal.Decimal('11.1111'),
decimal.Decimal('222.2222'),
decimal.Decimal('3333.3333'),
decimal.Decimal('1234.5678'),
]
for dec in decimals:
print dec.as_string(precision=2, rounding=ROUND_HALF_UP)
Wynikiem będzie:
0.00
11.11
222.22
3333.33
1234.57
Oczywiście nie możemy skorzystać z dokładnością po przecinku za kontekstu, bo ten uwzględnia całkowitej liczba cyfr, a nie tylko dokładność dziesiętna.
Nie jestem również zainteresowany konwersją wartości dziesiętnej na wartość zmiennoprzecinkową, aby uzyskać wartość. CAŁKOWITĄ przyczyną dziesiętnej jest unikanie przechowywania i wykonywania obliczeń na pływach.
Jakie są inne rozwiązania? Rozumiem, że istnieje wiele innych podobnych pytań dotyczących przepełnienia stosu, ale żaden z nich nie rozwiązał problemu, o który pytam.
Wielkie dzięki!
czy nie ma wbudowanego interfejsu dziesiętnego do obsługi formatowania wyjściowego lub dokładności dziesiętnej? –
@JoshuaBurns: To * jest * wbudowanym interfejsem do formatowania wyjściowego. –
, który zdecydowanie odpowiada na moje pytanie, dziękuję bardzo! Moim największym zmartwieniem było to, że format() wyrzucił wartość do wartości zmiennoprzecinkowej przed wykonaniem właściwego formatu. –