您现在所在的是:

施耐德电气论坛

回帖:6个,阅读:1221 [上一页] [1] [下一页]
50
weicy007
文章数:571
年度积分:50
历史总积分:50
品牌积分(施耐德):852
注册时间:2019/4/29
发站内信
发表于:2019/10/11 14:51:39
#0楼
在日常编程时有时会在进行算数运算时只需要保留小数点后两位或者三位的情况,不需要太多的小数位,在SoMachine中没有专门的功能块来保留固定的小数位数,需要通过编程来实现,不过编程也很简单。
以保留小数点后2位来距离,只需要将原来的real类型变量,乘以100,取整后再除以100即可,程序如下,a为处理前的数,b为保留了2位小数后的数;
附件 TIM截图20191011145031.jpg



37234
cvlsam 版主
文章数:12401
年度积分:1586
历史总积分:37234
品牌积分(施耐德):222
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2019/10/11 15:22:11
#1楼
以下是引用weicy0072019/10/11 14:51:39的发言:
在日常编程时有时会在进行算数运算时只需要保留小数点后两位或者三位的情况,不需要太多的小数位,在SoMachine中没有专门的功能块来保留固定的小数位数,需要通过编程来实现,不过编程也很简单。
以保留小数点后2位来距离,只需要将原来的real类型变量,乘以100,取整后再除以100即可,程序如下,a为处理前的数,b为保留了2位小数后的数;
附件 TIM截图20191011145031.jpg




我个人认为可以先把REAL转换为STRING,然后使用字符串操作函数根据需要保留的位数来返回对应的字符,之后将STRING转换为REAL,这样用户只要给出REAL和需要保留的位数即可。


附件 workpicture1.jpg

附件 workpicture2.jpg

Good Luck~
[此贴子已经被作者于2019/10/11 16:09:42编辑过]
50
weicy007
文章数:571
年度积分:50
历史总积分:50
品牌积分(施耐德):852
注册时间:2019/4/29
发站内信
发表于:2019/10/12 15:55:57
#2楼
回复 #1楼 cvlsam
太感谢了,这个确实非常好。
50
AUTOSYS168
文章数:288
年度积分:50
历史总积分:50
品牌积分(施耐德):308
注册时间:2019/10/29
发站内信
发表于:2019/11/14 17:50:38
#3楼
办法比困难多,好方法表情
899
jiemayu
文章数:12
年度积分:50
历史总积分:899
品牌积分(施耐德):7
注册时间:2010/11/10
发站内信
发表于:2020/6/13 16:40:33
#4楼
回复 #1楼 cvlsam
您好,按您的程序我测试了一下,保留3位以内的小数,是可以的,超过3位以后,程序就不起作用了,您那边可以测试一下
附件 BaiduShurufa_2020-6-13_16-36-3.jpg

附件 BaiduShurufa_2020-6-13_16-37-5.jpg
5190
FreeTigerMan
文章数:555
年度积分:165
历史总积分:5190
品牌积分(施耐德):895
注册时间:2002/9/9
发站内信
发表于:2020/6/17 19:03:55
#5楼
基于浮点数的表示方法,浮点数其实没法精确控制小数位数。楼上两位的做法,转回real的时候,其实还是出来多位的,因为原理就是这样的。所以要么用整数分别表示整数部分和小数部分,要么就在显示时处理。或者在整体算法上考虑。。。。。不知道我说清楚没有。
8132
0aguang0
文章数:1636
年度积分:255
历史总积分:8132
品牌积分(施耐德):2046
注册时间:2010/10/21
发站内信
发表于:2020/10/16 15:29:45
#6楼
回复 #1楼 cvlsam
测试了一下..确实3位再多就不好用了~~
不知道为什么
水平一般,能力有限.如有错误之处.欢迎并感谢指出.我一定认真学习积极改正.请勿DISS.

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

93.6006