从找答案上看到有问plc双精度浮点数怎么转单精度浮点数的,找了找没有找到现成的功能块于是自己就想没事做个,顺便学习一下浮点数的格式。 1、浮点数格式: 64位浮点数(双精度)格式为:
1位 11位 52位 S(符号位),编号63 E(阶码位),编号62 ~52 M(小数位),编号51 ~ 0 0表示正,1表示负 ?1022~+1023加上1023 任意 范围:4.9x10^-324 ~ 1.7x10^308
32位浮点数格式(单精度)格式:STEP7帮助
范围:3.4×10^38…3.4×10^38
2、思路: 双精度浮点数和单精度浮点数区别在于: 一是指数,双精度指数11位,最大为308计算为:(指数11位形成的数值-1027),单精度浮点数8位,最大38,计算:(8位形成的数值-127),双精度转单精度的指数计算是:(指数11位形成的数值-1027)+127. 二是小数,不管单精度还是双精度小数部分计算方式一样,所以,可以直接从双精度浮点数小数位中截取前23位即可, 3、编程 FC1: IN: OUT: TEMP: 程序,为了好看,以图片形式
4、执行结果:
5、结束语 不经常做程序,语句表用起来还是很费劲的,而且第一次用any类型的数据,以前也不了解浮点数的数据结构,再进行计算,就利用模拟器,做各种测试,经过前后一天半时间,总算搞明白了点。通过此次编程,倒是涨了很多知识,对数据结构也加深了了解。 水平较低,程序编的还不是很完整,请高手指正。
|