python向上取整
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、坡頭ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的坡頭網(wǎng)站制作公司
相關(guān)推薦:《Python教程》
方法:
Python?match.ceil函數(shù)
ceil(x)函數(shù)是向上取整,即取大于等于x的最接近整數(shù)。
import math
math.ceil(float(1)/2)
是利用原來的向下取整的機(jī)制如果原來是
實(shí)際上Python的round()函數(shù)可以接受兩個(gè)參數(shù)round(value,ndigits),第一個(gè)參數(shù)為實(shí)際操作數(shù),第二個(gè)參數(shù)為實(shí)際保留幾位,如果第二個(gè)參數(shù)不填,則默認(rèn)保留到整數(shù)位。
Python3.X對于浮點(diǎn)數(shù)默認(rèn)的是提供17位數(shù)字的精度。
結(jié)果是?-4
對正數(shù)是向下取整,對負(fù)數(shù)是向上取整。
學(xué)python的一個(gè)缺點(diǎn)就是對數(shù)據(jù)類型的基礎(chǔ)理解比較少,
你可以用二進(jìn)制來理解下,舉一個(gè)有符號的二進(jìn)制為例子:
對于無符號的?0b000~0b111?來說分別有
0b000?=?0;
0b001?=?1;
0b010?=?2;
0b011?=?3;
0b100?=?4;
0b101?=?5;
0b110?=?6;
0b111?=?7;
比如?uint?就是?int?的無符號形式。
當(dāng)相同數(shù)據(jù)為有符號形式時(shí)變?yōu)椋?/p>
0b000?=?0;
0b001?=?1;
0b010?=?2;
0b011?=?3;
0b100?=?-4;
0b101?=?-3;
0b110?=?-2;
0b111?=?-1;
(參考原碼、反碼、補(bǔ)碼)
所以根據(jù)這個(gè)規(guī)則,對float,double等數(shù)字是同理,在floor時(shí)將有符號位進(jìn)行省略,如以下位運(yùn)算():
0b000??1?=?0b000
0b001??1?=?0b000
有?0-0?和?1?-?0
0b010??1?=?0b001
0b011??1?=?0b001
有?2-?1?和?3?-?1
按照這個(gè)丟失精度的方法計(jì)算負(fù)數(shù)呢?
0b111??1?=?0b111
0b110??1?=?0b111
0b101??1?=?0b110
0b100??1?=?0b110
可知:
-1?-?-1?與?-2?-?-1
-3?-?-2?與?-4?-?-2
所以對負(fù)數(shù)的?floor?會向上取整,因?yàn)閬G失精度的方法是直接根據(jù)小數(shù)點(diǎn)截?cái)嗟摹?/p>
此時(shí)我們可以用built-in function int() 函數(shù)
用built-in function round() 函數(shù)
此時(shí)我們要用到模塊math中的 ceil() 方法
此時(shí)我們要用到模塊math中的 modf() 方法