技术论坛

 WinCC报表制作中关于小数处理的问题

返回主题列表
作者 主题
菜鸟工控
侠圣

经验值: 2210
发帖数: 263
精华帖: 6
楼主    2019-12-17 11:58:29
主题:WinCC报表制作中关于小数处理的问题 精华帖 

通常在wincc中涉及到的模拟量数据都是浮点数,当我们把数据存入数据库以后,再查询的时候就会容易出现小数位数变很多的情况,而且当数据小于1的时候,个位的0不显示。

这个情况我总结到了以下几种办法。

一、检查计算机的设置,有可能是设置问题。

开始菜单,控制面板,区域和语言,其他设置里有个0起始显示,将里边的.7改为0.7即可。


二、如果改后这个情况依然出现,那么就只能将数据转换为字符显示了,通常我们会用round函数来截取2位小数,用cstr函数来转换字符,这样也可以实现保留2位小数而且0显示。

三、还有一种情况就是如果我们的控件直接使用数据源赋值的,并不是循环赋值,那么久没办法在vbs脚本中使用第二种办法了。因此只能在数据库中解决。我想到的办法是原始数据直接用decimal(p,s)精确数据类型,指定精度,指定小数位数。通常我们的项目直接指定为(10,2)就可以了。但是这样的话在数据源赋值给显示控件的时候还是会出现0.7的0不显示的问题。因此在视图中直接用convert函数将其转换为字符类型就可以了。





wincc报表全套教材书+视频教程+实例:2606352062
黑猫警长W
至圣

经验值: 18280
发帖数: 2393
精华帖: 1
1楼    2019-12-17 12:09:37
主题:回复:WinCC报表制作中关于小数处理的问题

虽然简单,但适合入门

Mr_
侠客

经验值: 627
发帖数: 95
精华帖: 0
2楼    2019-12-17 19:51:44
主题:回复:WinCC报表制作中关于小数处理的问题

学习学习了

学习是一种信仰
CoolCool的猪
至圣

经验值: 16693
发帖数: 1307
精华帖: 2
3楼    2019-12-18 08:49:50
主题:回复:WinCC报表制作中关于小数处理的问题

会了不难
难了不会
学习了
谢谢
老师

同一个问题ID下,已经先回答此问题的人,如再参考我答案而修改自己答案的,就是王八蛋!
yecao2006
至圣

经验值: 17887
发帖数: 1523
精华帖: 2
4楼    2019-12-18 09:54:23
主题:回复:WinCC报表制作中关于小数处理的问题

第一个方法好像不管用。

我回来了!继续努力!
天芯
至圣

经验值: 18638
发帖数: 2092
精华帖: 0
5楼    2019-12-18 10:12:28
主题:回复:WinCC报表制作中关于小数处理的问题

挺好的,学习了

菜鸟工控
侠圣

经验值: 2210
发帖数: 263
精华帖: 6
6楼    2019-12-18 10:24:46
主题:回复:WinCC报表制作中关于小数处理的问题

是,这个可能是跟系统有关,经过我的测试,数据库中的实数real类型,可以显示0,但是小数点会很多。一旦经过四舍五入处理了。0又不显示了。所以我觉得还是直接数据库中指定小数位数,然后直接转字符,可以做个视图。提前转换好。查询的时候直接查视图就可以了,可以节省很多VBS的处理脚本。

wincc报表全套教材书+视频教程+实例:2606352062
ZD_JY
至圣

经验值: 12929
发帖数: 1075
精华帖: 8
7楼    2019-12-19 17:14:35
主题:回复:WinCC报表制作中关于小数处理的问题


,很不错啊,这个问题确实以前遇到过,没有你这个方法好啊

做最好的自己!活出自我!
不断攀登
至圣

经验值: 12543
发帖数: 1843
精华帖: 0
8楼    2019-12-20 07:59:36
主题:回复:WinCC报表制作中关于小数处理的问题


 感谢分享!

邮箱 yongquancun@126.com
胖头陀
奇侠

经验值: 9509
发帖数: 432
精华帖: 0
9楼    2019-12-20 08:23:11
主题:回复:WinCC报表制作中关于小数处理的问题


感谢分享!

菜鸟工控
侠圣

经验值: 2210
发帖数: 263
精华帖: 6
10楼    2019-12-20 10:59:19
主题:回复:WinCC报表制作中关于小数处理的问题

还没有经过大量数据的验证,用这种格式存储的数据貌似是比real等近似值类型更能节省空间的,如果确实有效果可以发上来

wincc报表全套教材书+视频教程+实例:2606352062
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。