S7-200計(jì)秒時(shí)鐘脈沖的個(gè)數(shù),累計(jì)到9321小時(shí)為什么就不再累計(jì)了?

發(fā)布時(shí)間:2023-11-14
請(qǐng)教個(gè)問題:s7-200程序中,我用一個(gè)sm0.5(1秒時(shí)鐘脈沖)的脈沖上升沿對(duì)vd1000進(jìn)行浮點(diǎn)數(shù)加1.0循環(huán)累積,然后再對(duì)vd1000除以3600.0,即可得出設(shè)備運(yùn)行的小時(shí)數(shù)時(shí)間?,F(xiàn)在的問題是當(dāng)設(shè)備運(yùn)行時(shí)間累積到9321時(shí)就不再累積了,程序中發(fā)現(xiàn)vd1000的數(shù)據(jù)不再增加了。3600*9321=33555600,浮點(diǎn)數(shù)范圍為+1.175495e-38至+3.402823e+38,說明沒有超過此范圍,這是什么原因呢?
當(dāng)對(duì)vd1000加100.0循環(huán)累積時(shí),vd1000的數(shù)據(jù)又會(huì)增加了!
答:這個(gè)問題可以給出精確的數(shù)學(xué)解釋。
浮點(diǎn)數(shù)的精度與它的尾數(shù)有關(guān),其尾數(shù)為二進(jìn)制小數(shù)1.m,m為23位的小數(shù)。所以浮點(diǎn)數(shù)的精度為24位二進(jìn)制有效位數(shù)。2的24次方為16777216。
樓主用浮點(diǎn)數(shù)能計(jì)的最大的數(shù)是3600*9321=33555600,該數(shù)除以2為16777800,與2的24次方16777216非常接近。在33555600附近加1.0加不上去,不是因?yàn)楦↑c(diǎn)數(shù)不能表示更大的數(shù),而是在做加法的時(shí)候,兩個(gè)數(shù)的指數(shù)應(yīng)該相同,1.0和33555600.0相比太小了,比33555600.0的尾數(shù)最低位(也是浮點(diǎn)數(shù)的最低位)的值的一半還小,所以相加的時(shí)候1.0的值被四舍五入忽略掉了,以后的累加值都不會(huì)增大。
解決的方法:
改為雙整數(shù)的加法,雙整數(shù)的有效位數(shù)為32位,計(jì)小時(shí)數(shù)夠用了。
上一個(gè):安卓如何下載原神(安卓怎么下載原神官服)
下一個(gè):蘋果樹花前復(fù)剪“五忌”

哪里買電腦便宜又可靠,請(qǐng)問在哪買電腦便宜
果樹嫁接應(yīng)注意哪些問題
windowsboot manager(電腦windowsbootmanager)
u盤與固態(tài)硬盤的區(qū)別,固態(tài)硬盤跟U盤有什么不同
厚聲0201WMF9761TEE今日行情、最新報(bào)價(jià)
word2018公式編輯器在哪里(word里面公式編輯器在哪)
花卉蟲害-茶黃螨
硬盤的兩種類型有哪些,硬盤的種類有哪些
菊花茶不宜多喝 易傷胃
win7提示硬盤損壞,硬盤提示文件或目錄損壞
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos