浮点数转整数过程
在屏幕上输入一个浮点数。经过浮点运算获得一个浮点数。然后这个浮点数用什么方法转换成长整数?我现在的做法好像不太好使。
浮点转成字符
然后小数点前的字符转成整数。
绕了个圈。有没有更简单一点的方法啊? 回复 6# 芳季
float a
short b=1
int c
GetData(a, "Local HMI", LW, 0, 1)
c=a/b
SetData(c, "Local HMI", LW, 10, 1) 本帖最后由 芳季 于 2013-8-16 11:18 编辑
kao.这都行。
不同类型可以混合运算!我想象中的混合计算结果,最后会以最高级的类型出现,却没有想到可以以指定的类型出现。
无论如何先试试。 强制类型转换,C语言里,=左边是定义成类型,=右边计算结果最终会强制成同一类型。basic也会继承这一规则 楼主,你是怎么转换的?可以详细一点吗? //本程序把一个浮点数做比例计算后输出一个32位整数。
//输入值在LW50。输出值在LW52。中间过程使用LW60~69
macro_command main()
float in
char data
int a
GetData (in, "Local HMI", LW, 50, 1)//获得屏幕数据
in=(in/(240*3.1416))*13042//计算传动结果
FLOAT2ASCII(in, data, 7)//浮点数转换字符
ASCII2DEC(data, a, 7)//字符转32位整数
SetData (a, "Local HMI", lw, 52, 1)//整数发送回屏幕显示伺服对应转速用
end macro_command
我做了这个程序,每次都是通过外部呼叫同步调用这个宏进行转换。好比带参数子程序一样。
但是我觉得过程比较烦。我也想看看有没有更简单的。 我在屏上有好些数值输入变换都要通过这个比例转换的。我就把这个转换独立写成一个宏。然后哪里要用就调用这个宏。宏,留用一个输入口50,和一个输出口52,还有过程量60~69。你可以按思路使用这个结构获得子功能的调用效果。但是占用了的地址一定不能在你的程序上重复使用了。 已通过实验,很成功,这个应该是最简洁的方法了,谢谢楼主 我还想更简洁的。不知道有没有,没有人回了。
你要注意我这转换是忽略小数点后面的全部数值的。 哎呀呀呀呀!
真行的啊。
膜拜……中
(思维活动:尼玛,说明书上哪里有写这个事情啊?)
仍然膜拜……中…… 牛人啊。
不知道小数点后的四舍五入部分有没有一并解决了呢? 乘以100就是啦。
面前没办法的就照这样做。有办法了之后再按好办法做。
不能等人来救的。必须自己先有后路。没有后路的话就先别走进去。蠢方法是自己的学习过程,人家的好方法试经验的累积过程。毕竟是不同的过程啊。 7楼大哥的程序无法实现,不知道什么原因。 你能理解了程序的语句吗?
一个透明玻璃杯放在桌面。人家手一指,问,那是什么?答:玻璃杯。
一个透明的玻璃杯放在桌面,里面装了牛奶。人家手一指,问,那是什么?答:那是牛奶。是牛奶。牛奶。奶。
那玻璃杯呢? 程序是从LW0读出来的数,转换成品放到LW10里面。
你是这样做的吗?
你有没有用一个什么条件去触发宏的运行啊?
LW0和LW10的数据格式设定好了吗?
我做完上面三个事情,马上就验证成功了。 正如芳季哥所说的,我只是看到牛奶而忽略了玻璃杯。
今天重新实验,一次成功,(自省:做技术,来不得半点浮躁啊。。。) 很好很好。自省。这个词用得很好。也做得很好。回帖也是回得很好。你回帖的时候也开心,我看见我也开心。 回复 7# leedspm
可以说一下原理吗?浮点数除以短整数的1得到双整数,我实在是想不通这个原理。 回复 13# 芳季
看到这段话就像看到了西门子论坛里的芳季大侠。是一个人吗? 哇 抓紧学习,急需解决的问题啊 楼主做的这个就是我想要的啊哈哈哈哈哈哈,不过我想把伺服转速转换成线速度,继续研究吧
页:
[1]
2