如果把浮點數(shù)轉(zhuǎn)換成整數(shù)
劉玉蓉
發(fā)布于2014-11-13 17:22
11
0
標簽:
問題是這樣的:半徑(整數(shù))存放在MW10中,圓周率是3.14159.用浮點數(shù)計算圓的周長,將結(jié)果轉(zhuǎn)換成整數(shù)。存放在MW14中。
我的想法是先把整數(shù)轉(zhuǎn)換成雙整數(shù),雙整數(shù)再轉(zhuǎn)換成實數(shù),然后在用浮點數(shù)乘法指令相乘??墒墙Y(jié)果如何把浮點數(shù)轉(zhuǎn)換成整數(shù),S7-300沒有這個指令的。有什么方法可以實現(xiàn)。
問題補充:
雙整數(shù)轉(zhuǎn)換成整數(shù)是不是在結(jié)果中取雙整數(shù)的低位兩個字節(jié)的數(shù)據(jù)呢
佳答案
怎么會沒有呢!
ROUND :將浮點數(shù)轉(zhuǎn)化為四舍五入的雙整數(shù)
CEIL:將浮點數(shù)轉(zhuǎn)化為大于等于它的小雙整數(shù)
FLOOR:將浮點數(shù)轉(zhuǎn)化為小于等于它的小雙整數(shù)
TRUNC:將浮點數(shù)轉(zhuǎn)化為舍去小數(shù)部分的雙整數(shù)
然后在用雙整數(shù)轉(zhuǎn)化為整數(shù)啊,不過需要注意數(shù)據(jù)溢出。
對于你補充的問題:如果雙整數(shù)的數(shù)據(jù)范圍沒有超過低字節(jié)的范圍的話,你這樣取可以。但是如果超過了,你取到的數(shù)就不是原來的數(shù),因為數(shù)據(jù)溢出了。建議你不要這樣操作,而要用DI_I的指令,因為這個指令在執(zhí)行的時候會判斷是否有溢出,然后你根據(jù)標志位是可以判斷的,而你自己直接去低字的話,你不知道有沒有溢出。