2017-09-21 3 views
0

문자열을 UFT에서 double로 변환하려고하지만 소수점이없는 출력을 표시합니다. 아래는 참조 용 코드입니다.UFT/QTP에서 문자열을 double로 변환하려면

vStr = "1000000.589765" 
msgbox Typename(vStr) 
strV1=CDBL(formatNumber(vStr,4)) 
msgbox Typename(strV1) 
print strV1 

출력 : formatNumber하지 않고, 그것의 작동하지 않는 것을 1000000589765

참고.

+0

코드가 맞습니다 ... 제 테스트에서 1000000.5898이 있습니다. 인쇄 영역을 지우고 다시 확인하십시오. 아마도 코드에서 strV1이 아닌 vStr을 인쇄하고있을 것입니다. 정직하기 위해 formatnumber를 필요로하지 않습니다. –

+0

동일한 코드를 실행했으며 결과는 10 진수가 아닙니다. 왜 그런 일이 일어나는지 확신 할 수 없습니다. 또한 "formatNumber"제거 할 때이 작동하지 않고 값을 double로 변환 할 수 없습니다. – cjmax006

+0

이것이 HP-UFT에만 국한되는 것이 아니라 VB의 문제인지 궁금합니다. Ive는 그것을 중복으로 표시했습니다. – Dan

답변

0

또 다른 구현은 DotNetFactory를 사용합니다. 또 다른 생각. 나는 사용을 부인하지 않고있다 CDbl. 그러나 가치가있다.

'Test Code 
Dim strConvertedCode 
strConvertedCode = ConvertDataType("1000000.589765","Double") 
If strConvertedCode <> null Then 
    Msgbox strConvertedCode 
End If 

Public Function ConvertDataType(ByVal SourceData,ByVal ConversionDataType) 
    'Initialization of variables 
    Dim objDotNetFactory 
    Dim strConvertedData : strConvertedData = null 
    Dim strSystemNamespace 
    'Determine the destination data type 
    Select Case UCase(ConversionDataType) 
     Case "DOUBLE" 
      strSystemNamespace = "System.Double" 
     'Implement further for your data types 
     'Reference https://msdn.microsoft.com/en-us/library/ms228360(v=vs.90).aspx 
     Case Default 
      Set objDotNetFactory = DotNetFactory.CreateInstance("System.Int32") 
    End Select 
    Set objDotNetFactory = DotNetFactory.CreateInstance(strSystemNamespace) 
    'Check the dot net factory instance is successful 
    If Not IsObject(objDotNetFactory) Then 
     Reporter.ReportEvent micWarning,"Data type convertor","Conversion from String to " & ConversionDataType & " failed, Since DotNetFactory instance was not created." 
     ConvertDataType = strConvertedData 
     Exit Function 
    End If 
    strConvertedData = objDotNetFactory.Parse(SourceData) 
    ConvertDataType = strConvertedData 
End Function 
관련 문제