亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中的數字運算及格式化

發布時間:2021-08-24 18:58:10 來源:億速云 閱讀:169 作者:chen 欄目:編程語言

本篇內容主要講解“Python中的數字運算及格式化”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python中的數字運算及格式化”吧!

  本篇幅主要針對浮點數的一些計算及格式化輸出。

  round()

  Python 提供的內置函數 round(number[, ndigits]) 可用于簡單的舍入運算。如下示例:

  >>> round(1.23)

  1

  >>> round(1.23, 1)

  1.2

  >>> round(1.27, 1)

  1.3

  >>> round(-1.27, 1)

  -1.3

  >>> round(1.2346, 3)

  1.235

  round() 函數返回四舍五入到小數點后 ndigits 位精度的數字。如果 ndigits 默認為 None,則返回最接近的整數。

  ndigits 參數可以是負數,在這種情況下,舍入運算會作用在十位、百位、千位等上面。例如:

  >>> x = 1234567

  >>> round(x, -1)

  1234570

  >>> round(x, -2)

  1234600

  >>> round(x, -3)

  1235000

  如果一個數字剛好在兩個邊界中間時,調用 round() 函數會返回離它最近的偶數。例如 round(0.5) 和 round(-0.5) 返回的結果都是 0。如下示例:

  >>> round(0.5)

  0

  >>> round(-0.5)

  0

  有時運用 round() 會得不到期望的值。例如 round(2.675, 2) 得到的是 2.67,卻不是期望得到的 2.68。如下:

  >>> round(2.675, 2)

  2.67

  這并非是 bug。Python 文檔也給出了其中的注解,這是因為大多數十進制小數實際上都不能以浮點數精確地表示。

  Note:The behavior of round() for floats can be surprising: for example, round(2.675, 2) gives 2.67 instead of the expected 2.68. This is not a bug: it’s a result of the fact that most decimal fractions can’t be represented exactly as a float.

  若需了解更多信息可以訪問: Floating Point Arithmetic: Issues and Limitations。

  格式化輸出

  數字舍入跟格式化不能混淆。若是簡單輸出指定寬度的數,可以考慮用 format(),不需要使用 round()。在格式化的時候指定精度就可以。例如:

  >>> x = 1234.56789

  >>> # 精確到小數點后兩位

  ... format(x, '0.2f')

  '1234.57'

  >>> # 以 10 個字符右對齊,精確到小數點 1 位

  ... format(x, '>10.1f')

  ' 1234.6'

  >>> # 左對齊

  ... format(x, '<10.1f')

  '1234.6 '

  >>> # 居中

  ... format(x, '^10.1f')

  ' 1234.6 '

  >>> # 包含千分位分隔符

  ... format(x, ',')

  '1,234.56789'

  >>> format(x, '0,.1f')

  '1,234.6'

  >>>

  同樣可以使用指數記法,將 f 改成 e 或者 E(取決于指數輸出的大小寫形式)。示例如下:

  >>> format(x, 'e')

  '1.234568e+03'

  >>> format(x, '0.2E')

  '1.23E+03'

  指定寬度和精度的一般形式為 '[<>^]?width[,]?(.digits)?',其中 width 和 digits 為整數,? 代表可選部分。這種格式可以用在字符串的 format() 方法中。示例如下:

  >>> 'The value is {:0,.2f}'.format(x)

  'The value is 1,234.57'

  精確運算鄭州較好的婦科醫院 http://www.kd0371.com/

  因為浮點數運算存在誤差,不建議嘗試使用舍入浮點值來“修正”表面上看起來正確的問題。示例如下:

  >>> a = 2.1

  >>> b = 4.2

  >>> c = a + b

  >>> c

  6.300000000000001

  >>> c = round(c, 2) # 不建議這么做

  >>> c

  6.3

  一般使用浮點數的情況下,不建議這么做。這些誤差在一般情況下能夠被容忍的。但是如果涉及到比如金融領域(不允許小誤差存在)的情況下,建議考慮使用 decimal 模塊。

  decimal

  由于浮點數不能精確的表示十進制,會出現上述簡單數學運算出現誤差的情況。

  Python 提供的 decimal 模塊,在損耗一定性能的前提下,能夠解決這個問題。如下示例:

  >>> from decimal import Decimal

  >>> a = Decimal('4.2')

  >>> b = Decimal('2.1')

  >>> a + b

  Decimal('6.3')

  >>> print(a + b)

  6.3

  >>> (a + b) == Decimal('6.3')

  True

  雖然代碼寫起來會有些奇怪,但是 Decimal 對象能夠像普通的浮點數支持所有的常用數學運算。在使用 print 的情況下,跟普通數字沒有區別。

  decimal 允許控制計算,包括精確位數跟舍入運算。可以通過創建上下文管理器進行設置更改,示例如下:

  >>> from decimal import localcontext

  >>> a = Decimal('1.3')

  >>> b = Decimal('1.7')

  >>> print(a/b)

  0.7647058823529411764705882353

  >>> with localcontext() as ctx:

  ... ctx.prec = 3 # 精確位數

  ... print(a/b)

  ...

  0.765

  >>> with localcontext() as ctx:

  ... ctx.prec = 50 # 精確位數

  ... print(a/b)

  ...

  0.76470588235294117647058823529411764705882352941176

  decimal 運用場景,更常見的是在金融領域(不能容忍小誤差存在)。

  但是 decimal,需要損耗性能進行精確的運算,在普通領域,甚至于科學領域的大多數運算,使用普通浮點數類型是普遍的做法。

  除了真實世界很少要求要精確到普通浮點數能提供的 17 位精度的原因外,還有進行大量運算的時候,普通浮點數要快得多,這同樣是需要衡量的地方。

  但也不能完全忽略誤差,誤差出現,同樣需要研究并理解誤差產生的來源。

到此,相信大家對“Python中的數字運算及格式化”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天气| 黄骅市| 湘潭市| 甘泉县| 邵东县| 云阳县| 洪湖市| 资讯| 阿克陶县| 秭归县| 嘉黎县| 遵化市| 万载县| 余庆县| 靖远县| 梁山县| 秭归县| 罗山县| 公安县| 宜阳县| 汝阳县| 霍林郭勒市| 容城县| 碌曲县| 民勤县| 卢氏县| 湖口县| 沁水县| 嘉义市| 芦溪县| 灵武市| 鲁山县| 金塔县| 镶黄旗| 拉孜县| 芜湖县| 道孚县| 新巴尔虎右旗| 秦皇岛市| 芦山县| 环江|