㈠ python中如何減少計算浮點型乘除法
浮點數一個普遍的問題就是在計算機的世界中,浮點數並不能准確地表示十進制。並且,即便是最簡單的數學運算,也會帶來不可控制的後果。因為,在計算機的世界中只認識0與1。python中的decimal模塊可以解決上面的煩惱
decimal模塊中,可以通過整數,字元串或原則構建decimal.Decimal對象。如果是浮點數,特別注意因為浮點數本身存在誤差,需要先將浮點數轉化為字元串。
㈡ Python中的浮點數原理與運算分析
Python中的浮點數原理與運算分析
本文實例講述了Python中的浮點數原理與運算。分享給大家供大家參考,具體如下:
先看一個違反直覺的例子:
>>> s = 0.
>>> for i in range(10): s += .1
>>> s
0.9999999999999999
# 錯誤被累加
再看一個更為普遍,直接影響判斷邏輯的例子:
>>> from math import sqrt
>>> a = sqrt(2)
>>> a*a == a
False
之所以會出現以上的結果,在於 Python (更准確地說是計算機硬體體系結構)對浮點數的表示,我們來看計算機(基於二進制)對十進制小數 0.1 的表示,十進制小數向二進制小數轉換的方法請見 Python十進制小數與二進制小數相互轉換。將十進制小數 0.1 轉換為二進制時的結果為 0.0001100110011001....,無限循環,計算機無法展示無限的結果,只能對結果進行截斷,這是浮點數精度問題的根源。
「==」 on floats
基於以上的考慮,當我們進行浮點數的相等比較時,要特別小心,直接使用 == 是有問題的,一種通用的做法即是,不是檢測浮點數是否相等,而是檢測二者是否足夠接近,
>>> a = sqrt(2)
>>> abs(a*a-2) < epsilon
# 判斷是否小於某一小量
㈢ python 乘法問題: 100*2.3 等於 229.99999999999997 這是為何
1、整形和浮點進行運算時,整形會轉成浮點來運算
2、python中浮點(flaot)確實存在精度問題,具體原因是二進制和十進制轉換中的限位問題,可以自行去翻翻資料查一查。
你嘗試直接輸出一個稍長的浮點數,例如2.2999999999999998,輸出的是2.3對不對?
這就是精度問題
3、設計到浮點計算,可以用decimal來實現高精度運算
fromdecimalimportDecimal
Decimal(100)*Decimal(2.3)
4、除法只需要導入division即可
from__future__importdivision
然後就可以對浮點數進行精確除法計算了
㈣ python float 運算
Python 3.X對於浮點數默認的是提供17位數字的精度。
參考:http://www.cnblogs.com/herbert/p/3402245.html
實踐出真知,盡信書不如無書
㈤ python中浮點數的處理
我感覺是python版本問題我這里用的3.2版本輸出就是1.0
㈥ 如何利用Python設計語言操作各種不同的浮點數
方法/步驟
第一步,定義一個變數age並賦值為80,列印該變數值,如下圖所示:
第二步,將定義的變數age跟字元串拼接到result變數中,列印result結果,結果發現出現類型錯誤,如下圖所示:
第三步,利用str()函數將數字age轉換成字元串,然後再次拼接到字元串中,如下圖所示:
第四步,Python設計語言中的注釋用「#」標識,注釋是不列印出來的,如下圖所示:
第五步,import this可以展示Python語言中的設計規則,如下圖所示:
第六步,將浮點數0.2和0.4相加,結果發現結果不是0.6,如下圖所示:
注意事項
注意使用浮點數操作運算
注意數字和字元串轉換
㈦ python的浮點數運算是不是精度有問題阿
再計算機的硬體中,浮點數以二進制小數表示。比如小數
[python]view plain
0.125
可看做1/10+2/100+5/1000,同樣的方式二進制小數
[python]view plain
0.001
這兩個小數實際的值是相同的,唯一的不同是0.125是十進製表示,0.001是二進製表示。可是不幸的是,多數的十進制小數不能用二進制小數准確的表示。通常,你輸入的十進制浮點數只能由存儲在機器中的二進制浮點數近似表示。無論你使用多少位二進制數字,十進制的0.1都不能准確的由二進制小數表示,其是無限重復的小數
[python]view plain
0....
[python]view plain
0.0011010
實際中,我們很容易忘記存儲的數據是原始十進制的的近似表示。Python只會顯示出以二進制形式存儲再計算機中的真正十進制數的近似數。如
[python]view plain
0.
[python]view plain
0.1
[python]view plain
>>>0.1+0.2
0.30000000000000004
[python]view plain
>>>round(2.675,2)
2.67
[python]view plain
>>>fromdecimalimportDecimal
>>>Decimal(2.675)
Decimal('2.')
㈧ Python 問題
你乾脆用 cm 做單位,計算時 再轉換為 米
要麼都轉換為 浮點數 再 相乘 相除
後面要相乘 相除,結果你讓輸入的浮點數 轉換為 整數
㈨ python中常見的運算符有哪些
| 算術運算符 |
+:兩個數相加兩個數相加,或是字元串連接
-:兩個數相減
*:兩個數相乘,或是返回一個重復若干次的字元串
/:兩個數相除,結果為浮點數
%:取模,返回兩個數相除的余數
//:兩個數相除,返回商的整數部分
**:冪運算,返回乘方結果
| 關系運算符 |
==:比較對象是否相等
!=:比較對象是否不相等
>:大於,例如a>b,將比較a與b的大小,a>b返回True,否則返回False
<:小於,例如a<b,將比較a與b的大小,a<b返回true,否則返回false< p="">
>=:大於等於,例如a>=b,將比較a與b的大小,a>=b返回True,否則返回False
<=:小於等於,例如a<=b,將比較a與b的大小,a<=b返回True,否則返回False
| 賦值運算符 |
=:常規賦值運算符,將運算結果賦值給變數
+=:加法賦值運算符,例如 a+=b 等效於 a=a+b
-=:減法賦值運算符,例如 a-=b 等效於 a=a-b
*=:乘法法賦值運算符,例如 a*=b 等效於 a=a*b
/=:除法賦值運算符,例如 a/=b 等效於 a=a/b
//=:取整除賦值運算符,例如 a//=b 等效於 a=a//b
%=:取模賦值運算符,例如 a%=b 等效於 a=a%b
**=:冪運算賦值運算符,例如 a**=b 等效於 a=a*b
| 邏輯運算符 |
and:與運算,如果a 為False,a and b返回False 否則返回y的計算值
or:或運算,如果a非0,返回a的值,否則返回b的值
not:非運算,如果a為True,返回False,如果a為False,返回True
| 成員運算符 |
in:如果在指定的序列中找到值返回True,否則返回False
not in:如果在指定的序列中找到值返回True,否則返回False
| 身份運算符 |
is:判斷兩個標識符是不是引用自一個對象
is not:判斷兩個標識符是不是引用自不同對象
㈩ Python3 浮點運算 求助
因為計算機並不能精確表示0.1,0.2,0.3這種數字。
計算機內部,實際存儲的是其近似值:在咱們加法計算之前,Python內部存儲的數,已經是帶有誤差的了。
這個近似值,是根據分數來的:表示一個浮點數,是兩個整數的除法表示,而且除數必須是2的冪次。
至於運算結果正確,有兩種情況:一是兩個誤差抵消了。二是系統對輸出進行了控制,沒有輸出過長的誤差值。