我正在开展一些自动化项目。
数据在LabVIEW中通过第三方硬件传递,并通过浮点数据类型的OPC服务器进一步传递给WinCC flexible。
输出显示字段支持字符串输出。显示字段上显示的数据在VBScript中处理。
面临的问题是:
WinCC support float 标记,最大长度为4。
显示字段上显示的输出是字符串类型。 当数据通过LabVIEW传递时:
示例1: LabVIEW数据:1.27e-4 | WinCC Flex上的输出:0.000127 [错误的表示] e-5以下的所有数据如上所示。
例2:
LabVIEW数据:1.27e-10 | WinCC Flex上的输出:1.27E-10 [正确代表]
VBScript中是否有任何方法可以将输出数据格式化为指数表示法?
目前正在使用此VBS进行表示...
If SmartTags("tag_06_1") = 0 Then SmartTags("output_1") = CStr (SmartTags("presseure_test"))
答案 0 :(得分:2)
VBScript中所有格式问题的最佳解决方案(对于降压(错误?))解决方案是利用.NET格式。简单的POC脚本:
Dim aNums : aNums = Split("0.123 1.27e-4 1.27e-10")
Dim sNum
For Each sNum in aNums
WScript.Echo sNum, CDbl(sNum), fmtExpNum(CDbl(sNum))
Next
Function fmtExpNum(dblX)
Dim oSB : Set oSB = CreateObject("System.Text.StringBuilder")
oSB.AppendFormat "{0:E2}", dblX
fmtExpNum = oSB.ToString()
End Function
输出(德语区域设置):
0.123 0,123 1,23E-001
1.27e-4 0,000127 1,27E-004
1.27e-10 0,000000000127 1,27E-010