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