成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python數(shù)值處理(一)

isaced / 3427人閱讀

摘要:取整使用函數(shù)可以輕松的對(duì)浮點(diǎn)數(shù)進(jìn)行取整操作。這是因?yàn)楹瘮?shù)在應(yīng)對(duì)這種與兩個(gè)整數(shù)距離相同的情況時(shí),會(huì)取到最近的偶數(shù)上去。如果你特別需要精確的數(shù)值,那么可以使用模塊。

round()取整

使用round()函數(shù)可以輕松的對(duì)浮點(diǎn)數(shù)進(jìn)行取整操作。示例如下:

>>> round(1.23, 1)
1.2
>>> round(1.27, 1)
1.3
>>> round(-0.36, 1)
-0.4

round()第二個(gè)參數(shù)可以是負(fù)數(shù):

>>> a = 13849
>>> round(a, -1)
12850
>>> round(a, -2)
13800

但是要注意,這里有兩個(gè)很奇怪的例子:

>>> round(2.5)
2
>>> round(0.5)
0

可以發(fā)現(xiàn),這里完全沒(méi)有按照我們所熟悉的四舍五入的取整規(guī)則來(lái)。這是因?yàn)?b>round()函數(shù)在應(yīng)對(duì)這種與兩個(gè)整數(shù)距離相同的情況時(shí),會(huì)取到最近的偶數(shù)上去。

同時(shí)官方文檔中還舉了一個(gè)例子,

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. See Floating Point Arithmetic: Issues and Limitations for more information.

round(2.675, 2)的結(jié)果居然是2.67,這個(gè)的原因是浮點(diǎn)數(shù)表示是有誤差的,2.675在計(jì)算機(jī)上實(shí)際上不是準(zhǔn)確的2.675。

解釋一下浮點(diǎn)數(shù)問(wèn)題

首先我們要明確一個(gè)概念,計(jì)算機(jī)只能識(shí)別二進(jìn)制,也就是一堆10的組合,但是人類常用的卻是十進(jìn)制。
十進(jìn)制的數(shù)在計(jì)算機(jī)里就需要轉(zhuǎn)換成二進(jìn)制表示,在將十進(jìn)制整數(shù)轉(zhuǎn)為二進(jìn)制的時(shí)候,往往是將原數(shù)不斷除以2,直到商小于1,將每一次得到的余數(shù)逆序排列,就能得到這個(gè)整數(shù)的二進(jìn)制表示了。
到了小數(shù)部分,我們采用的是乘以2,取整數(shù)部分,直到小數(shù)部分為0,順序排列。但是有些特殊的數(shù)就要搞事情了。

0.1 * 2 = 0.2 => 0
0.2 * 2 = 0.4 => 0
0.4 * 2 = 0.8 => 0
0.8 * 2 = 1.6 => 1
0.6 * 2 = 1.2 => 1
0.2 * 2 = 0.4 => 0
0.4 * 2 = 0.8 => 0
0.8 * 2 = 1.6 => 1
...

發(fā)現(xiàn)沒(méi)有,進(jìn)入無(wú)限循環(huán)了,也就是說(shuō)整數(shù)中一些小數(shù),在二進(jìn)制表示的時(shí)候是無(wú)限循環(huán)小數(shù),但是在計(jì)算機(jī)中畢竟是用有限位來(lái)表示一個(gè)值的,這就造成了有些小數(shù)(浮點(diǎn)數(shù))在計(jì)算機(jī)中是被截掉部分的,這就是浮點(diǎn)數(shù)不精確的原因啦。

decimal

如果你特別需要精確的數(shù)值,那么可以使用decimal模塊。當(dāng)然這是有性能代價(jià)的(有得必有失嘛)。
舉個(gè)例子:

>>> a = 4.2
>>> b = 2.1
>>> a + b
6.300000000000001
>>> (a+b) == 6.3
False
# 這次試試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
數(shù)值的輸出格式化

如果只是想讓數(shù)值以固定的位數(shù)輸出,那么是用不著round()的。

>>> a = 1.23456
>>> format(a, "0.2f")
"1.23"
>>> format(a, "0.3f")
"1.234"

歡迎關(guān)注個(gè)人公眾號(hào)公子政的宅日常查看更多文章:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43961.html

相關(guān)文章

  • Python強(qiáng)大的語(yǔ)法支持

    摘要:浮點(diǎn)數(shù)計(jì)算不光對(duì)整數(shù)運(yùn)算提供了支持,同樣對(duì)我們俗稱的小數(shù)也提供了便利的運(yùn)算。但要注意的一點(diǎn)是有些版本對(duì)于浮點(diǎn)數(shù)是位數(shù)限制的對(duì)比下面兩張圖,所以可能會(huì)出現(xiàn)溢出或者未知報(bào)錯(cuò),在真正開(kāi)發(fā)的過(guò)程中,盡量不要寫(xiě)這種代碼否則背鍋。 學(xué)習(xí)任何一種編程語(yǔ)言,包括但不限于C、C++、Java、Python,我...

    adie 評(píng)論0 收藏0
  • Python創(chuàng)建數(shù)值列表

    摘要:創(chuàng)建數(shù)值列表上一篇文章列表處理下一篇文章字典處理可以產(chǎn)生一些列數(shù)值語(yǔ)法開(kāi)始下標(biāo)包括結(jié)束下標(biāo)不包括步長(zhǎng)實(shí)例結(jié)果利用將產(chǎn)生的數(shù)值轉(zhuǎn)化為列表實(shí)例結(jié)果列表解析快速生成數(shù)值列表語(yǔ)法實(shí)例實(shí)例結(jié)果 Python創(chuàng)建數(shù)值列表 上一篇文章:Python列表處理下一篇文章:Python字典處理 1、range range()可以產(chǎn)生一些列數(shù)值語(yǔ)法:range(開(kāi)始下標(biāo)(包括),結(jié)束下標(biāo)(不包括)[,步長(zhǎng)...

    MockingBird 評(píng)論0 收藏0
  • 真假美猴王-Numpy數(shù)據(jù)與Python數(shù)組的區(qū)別與聯(lián)系

    摘要:下文統(tǒng)一稱為數(shù)組是存儲(chǔ)單一數(shù)據(jù)類型的多維數(shù)組同語(yǔ)言數(shù)組直接保存數(shù)值而則是能夠?qū)?shù)組進(jìn)行處理的函數(shù)。動(dòng)態(tài)數(shù)據(jù)類型與的數(shù)組和的這些不可變數(shù)據(jù)類型的適用場(chǎng)景等可變數(shù)據(jù)類型適用于需要不斷對(duì)原始數(shù)據(jù)進(jìn)行修改的場(chǎng)景。 showImg(https://segmentfault.com/img/remote/1460000018925396);Numpy,是python中的一個(gè)矩陣計(jì)算包,功能類似ma...

    鄒強(qiáng) 評(píng)論0 收藏0
  • Python 與 Unicode

    摘要:最近使用處理一些網(wǎng)絡(luò)相關(guān)的問(wèn)題,被相關(guān)的一系列編碼問(wèn)題搞得一頭霧水。與接下來(lái)是中對(duì)于字符串的處理。中的和在中,其類型規(guī)定了底層的數(shù)據(jù)結(jié)構(gòu),是位整數(shù)串,也即跟語(yǔ)言中的字符串類似。這些問(wèn)題在中得到解決。 最近使用 Python 2 處理一些網(wǎng)絡(luò)相關(guān)的問(wèn)題,被 Unicode, String 相關(guān)的一系列編碼問(wèn)題搞得一頭霧水。在這里整理一下相關(guān)的概念吧。 ASCII Unicode UTF8...

    Tangpj 評(píng)論0 收藏0
  • SICP Python 描述 1.2 編程元素

    摘要:程序用于在編程社群的成員之間交流這些想法。在編程中,我們處理兩種元素函數(shù)和數(shù)據(jù)。在中,我們可以使用賦值語(yǔ)句來(lái)建立新的綁定,它包含左邊的名稱和右邊的值。例如,它并不能處理賦值語(yǔ)句。這些圖解的必要部分是函數(shù)的表示。 1.2 編程元素 來(lái)源:1.2 The Elements of Programming 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 編程語(yǔ)言是操作計(jì)算機(jī)來(lái)執(zhí)行任務(wù)...

    CoorChice 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<