quote:以下是引用youhm在2010-07-15 11:06:23的发言:
楼主数据本来就是Real类型的,所以5楼是正确的
你说的对,是我太冲动,反倒弄错了。5楼的帖子中的转换公式是正确的。
在DB2中定义三个不同数据类型的变量:
DB2.DB_VAR1(WORD):DB2.DBW0,
DB2.DB_VAR2(DWORD):DB2.DBD2,
DB2.DB_VAR3(REAL): DB2.DBD6,
与100相加正确的转换公式如下:
DB2.DBW0:=DWORD_TO_WORD(DINT_TO_DWORD(REAL_TO_DINT(DINT_TO_REAL(DWORD_TO_DINT(WORD_TO_DWORD(DB2.DBW0)))+INT_TO_REAL(100))));
DB2.DBD2:=DWORD_TO_WORD(DINT_TO_DWORD(REAL_TO_DINT(DINT_TO_REAL(DWORD_TO_DINT(DB2.DBD2))+INT_TO_REAL(100))));
DB2.DBD6:=REAL_TO_DWORD(DWORD_TO_REAL(DB2.DBD6)+INT_TO_REAL(100));
以上三条语句经过测试,结果正确,仅供参考,还有其它转换方案。
一定要注意BYTE、WORD、DWORD TO “REAL”时的转换,为了获得正确的“REAL”数,必须总是通过中间步骤“DWORD_TO_DINT”和“DINT_TO_REAL”来实现。