欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

float在乘法里要取整嗎

錢良釵2年前20瀏覽0評論

float在乘法里要取整嗎?

float在乘法里是要取整數的

1.10整數部分就是1,轉換成二進制1(這里整數轉二進制不再贅述)小數部分:0.10.1*2=0.2取整數部分0,基數=0.20.2*2=0.4取整數部分0,基數=0.40.4*2=0.8取整數部分0,基數=0.80.8*2=1.6取整數部分1,基數=1.6-1=0.60.6*2=1.2取整數部分1,基數=1.2-1=0.20.2*2=0.4取整數部分0,基數=0.4...直至基數為0。1.1用二進制表示為:1.000110...xxxx....(后面表示省略)

關于之前的演示,相當于,因為3.4的存儲,發生了精度損失(3.5不會,因為3.5的二進制是11.1,補碼存儲依然不會發生精度損失),所以在相減的時候,發生了一次精度損失,最后結果存儲的時候,再次發生一次精度損失。所以,才會出現最后的小尾巴情況。

第二部分:有哪些方法可以解決這個問題呢?

解決這個問題?不存在的,除非是提高精度——讓計算機內能夠完整的存儲數字的二進制(二進制補碼)表示,否則的話,只要有精度損失,就指不定什么時候會冒出來小尾巴。我們追求的解決,自然也是從提高精度,和“表面看起來正確”這兩條道路去追求。

提高精度——Python本身自帶的float已經是可支持浮點數的最高精度形式。當然,這個肯定是不能阻擋我們對更高精度的要求,這里可以自己實現高精度的數據形式,也可以使用Python擴展模塊:Decimal。使用Decimal本身需要導入decimal包,初始化decimal數據可以使用整型數據和字符串,而不能使用float型數據,正如之前我們所說的那樣,某些浮點數存儲會發生精度損失——這意味著float本身就不夠精確。