簡體   English   中英

有沒有更易讀或Python的方式將小數點格式設置為2個位?

[英]Is there a more readable or Pythonic way to format a Decimal to 2 places?

將十進制固定到兩個位置的語法到底是怎么回事?

>>> from decimal import Decimal
>>> num = Decimal('1.0')
>>> num.quantize(Decimal(10) ** -2) # seriously?!
Decimal('1.00')

有沒有一種更好的方法,乍一看似乎並不那么深奧? “量化小數”聽起來像是《星際迷航》一集中的技術泡沫!

使用字符串格式:

>>> from decimal import Decimal
>>> num = Decimal('1.0')
>>> format(num, '.2f')
'1.00'

format()函數將字符串格式應用於值。 Decimal()對象的格式可以像浮點值一樣。

您還可以使用此值來插值格式化的十進制值,該值是一個較大的字符串:

>>> 'Value of num: {:.2f}'.format(num)
'Value of num: 1.00'

請參閱格式字符串語法文檔

除非您確切地知道自己在做什么,否則通過量化來擴展有效數字的數量是不可行的。 量化是會計軟件包的不足 ,通常旨在將結果舍入到較少的有效位數。

Quantize用於設置在值內部實際保留的位數,然后再將其轉換為字符串。 正如Martijn所指出的那樣,通常這樣做是為了通過舍入來減少位數,但是反之亦然。 通過將目標指定為十進制數字而不是位數,您可以使兩個值匹配,而不必特別知道其中有多少位數。

如果您直接使用一個十進制值而不是嘗試計算它,那么看起來似乎有些深奧:

num.quantize(Decimal('0.01'))

您可以設置一些常量來隱藏復雜性:

places = [Decimal('0.1') ** n for n in range(16)]

num.quantize(places[2])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM