c語言float轉(zhuǎn)換為int 怎樣將浮點數(shù)轉(zhuǎn)換成整數(shù)?
怎樣將浮點數(shù)轉(zhuǎn)換成整數(shù)?有兩種方法:1。通過強制類型轉(zhuǎn)換float a=1.1f//定義一個浮點變量aint B=(int)a//這里用(int)方法強制轉(zhuǎn)換float,結(jié)果是12。通過轉(zhuǎn)換成字符串,
怎樣將浮點數(shù)轉(zhuǎn)換成整數(shù)?
有兩種方法:1。通過強制類型轉(zhuǎn)換
float a=1.1f//定義一個浮點變量aint B=(int)a//這里用(int)方法強制轉(zhuǎn)換float,結(jié)果是1
2。通過轉(zhuǎn)換成字符串,在截斷的整數(shù)部分
float a=1.1f//定義一個浮點變量a
使用int指令將浮點數(shù)轉(zhuǎn)換成整數(shù),使用FLT指令將整數(shù)轉(zhuǎn)換成浮點數(shù)。這說明不難理解。值得注意的是,16位整數(shù)在轉(zhuǎn)換成浮點數(shù)后會占用32位的空間。
一般采用PLC進行浮點數(shù)運算,精度相對較高(如脈沖數(shù)),運算量較大。因此,浮點數(shù)運算一般采用長字節(jié)運算(指令前加d),即dint和dflt。此時,一個32位整數(shù)轉(zhuǎn)換成浮點數(shù)占用4個16位寄存器,即64位空間
三菱PLC使用int指令將浮點數(shù)轉(zhuǎn)換成整數(shù)。在該指令中,二進制整數(shù)被轉(zhuǎn)換成二進制浮點數(shù);常數(shù)K和H在每個浮點運算指令中自動轉(zhuǎn)換,但在FLT指令中不進行處理。使用printf輸出int占用的字節(jié)數(shù):printf(%d”,sizeof(int))除了int type,還有short,long,long-long類型來表示整數(shù)。在匯編語言中,int向CPU發(fā)送中斷。格式為int VEC。VEC是中斷向量數(shù),其值為0~255。CPU根據(jù)向量號調(diào)用內(nèi)核對應(yīng)的中斷例程。指令操作為:1,(SP)←(SP)-2,((SP)1:(SP))←(FR)2,(if)←0,(TF)←03,(SP)←(SP)-2,((SP)1:(SP))←(CS)4,(SP)←(SP)-2,((SP)1:(SP))←(IP)5,(CS)←(VEC*42),(IP)←(VEC*4)int VEC指令僅影響if和TF(將它們設(shè)置為零)。
三菱plc里面將浮點數(shù)轉(zhuǎn)換成整數(shù)用什么指令?
C語言有以下舍入方法:
1。直接給整型變量賦值。如:inti=2.5或I=(int)2.5,此方法使用小數(shù)部分的舍入,可用于您的問題。
2. C/C中的整數(shù)除法運算符“/”具有舍入函數(shù)(int/int),下面描述的舍入函數(shù)的返回值是雙精度的。整數(shù)除法的正整數(shù)舍入是對小數(shù)部分的舍入,可以用來解決你的問題。但是,整數(shù)除法的負整數(shù)舍入結(jié)果與C編譯器的使用有關(guān)。
3. 使用地板功能。Floor(x)返回小于或等于x的最大整數(shù)。例如:Floor(2.5)=2floor(-2.5)=-34,使用cel函數(shù)。Ceil(x)返回大于x的最小整數(shù)。例如:Ceil(2.5)=3ceil(-2.5)=-2floor()四舍五入為負無窮大,floor(-2.5)=-3;Ceil()四舍五入為正無窮大,Ceil(-2.5)=-2。樓層功能可用于解決您的問題。5Intb=(int)a//舍入INTC=(int)(a0.5)//舍入
由于整數(shù)在PLC中保存時會自動轉(zhuǎn)換為二進制,因此可以直接使用FLT指令(將二進制整數(shù)轉(zhuǎn)換為二進制浮點數(shù))。