新聞中心
1、浮點(diǎn)數(shù)的一個(gè)普遍的問(wèn)題是它們不能精確的表示十進(jìn)制數(shù)。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、龍沙ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的龍沙網(wǎng)站制作公司
>>> a = 4.2 >>> b = 2.1 >>> a + b 6.300000000000001 >>> (a + b) == 6.3 False
這是由于底層 CPU 和IEEE 754 標(biāo)準(zhǔn)通過(guò)自己的浮點(diǎn)單位去執(zhí)行算術(shù)時(shí)的特征??此朴懈F的小數(shù), 在計(jì)算機(jī)的二進(jìn)制表示里卻是無(wú)窮的。
一般情況下,這一點(diǎn)點(diǎn)的小誤差是允許存在的。如果不能容忍這種誤差(比如金融領(lǐng)域),那么就要考慮用一些途徑來(lái)解決這個(gè)問(wèn)題了。
2、Decimal
使用這個(gè)模塊不會(huì)出現(xiàn)任何小誤差。
>>> 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盡管代碼看起來(lái)比較奇怪,使用字符串來(lái)表示數(shù)字,但是 Decimal 支持所有常用的數(shù)學(xué)運(yùn)算。 decimal 模塊允許你控制計(jì)算的每一方面,包括數(shù)字位數(shù)和四舍五入。在這樣做之前,需要?jiǎng)?chuàng)建一個(gè)臨時(shí)上下文環(huán)境來(lái)改變這種設(shè)定:
>>> from decimal import Decimal, 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
>>> 新聞標(biāo)題:創(chuàng)新互聯(lián)Python教程:Python中的浮點(diǎn)數(shù)如何計(jì)算?
文章起源:http://fisionsoft.com.cn/article/dhpicpp.html


咨詢
建站咨詢
