programing

정수.구문 분석 대.신트

telebox 2023. 5. 17. 22:45
반응형

정수.구문 분석 대.신트

기본적으로, 저는 두 가지 모두를 사용해 왔습니다.Integer.Parse그리고 대부분의 일상적인 프로그래밍 작업에서 CNt를 사용하지만, 저는 둘 사이의 차이점이 무엇인지 약간 혼란스럽습니다.

사이의 차이점은 무엇입니까?Integer.Parse그리고.CIntVB.NET에서?

CInt보다 훨씬 더 많은 일을 합니다.

CInt에서는 먼저 전달된 내용이 정수인지 확인한 다음 단순히 캐스트하여 반환합니다.더블인 경우 먼저 더블을 문자열로 변환하지 않고 변환을 시도합니다.

다음 도움말에서 확인하십시오.CInt기타 유형 변환 함수

부분 부품.비적분 값을 정수형으로 변환하면 정수 변환 함수(CByte, CInt, CLng, CSByte, CSShort, CUInt, CULng 및 CUShort)가 분수 부분을 제거하고 값을 가장 가까운 정수로 반올림합니다.

부분 부분이 정확히 0.5이면 정수 변환 함수는 부분을 가장 가까운 짝수 정수로 반올림합니다.예를 들어 0.5는 0으로 반올림하고 1.5와 2.5는 모두 2로 반올림합니다.이것은 때때로 은행가의 반올림이라고 불리는데, 그것의 목적은 그러한 숫자들을 더할 때 축적될 수 있는 편향을 보상하는 것입니다.

따라서 간단히 말해서, 그것은 문자열을 정수로 변환하는 것보다 훨씬 더 많은 일을 합니다. 예를 들어 분수에 특정 반올림 규칙을 적용하는 것, 불필요한 변환을 단락시키는 것 등입니다.

문자열을 정수로 변환하는 경우 알 수 없는 값(예: a)을 강제로 사용하려면 (또는 )을 사용합니다.variant또는object데이터베이스)에서 정수로, 사용CInt.

ILDASM을 사용하여 샘플 코드를 보면 CInt가 다음 호출로 변환된 것을 알 수 있습니다.

마이크로소프트.Visual Basic]Microsoft.Visual Basic.컴파일러 서비스.변환:정수로(문자열)

.NET Reflector를 사용하여 다음 코드를 추출할 수 있습니다.

Public Shared Function ToInteger(ByVal Value As String) As Integer
    Dim num As Integer
    If (Value Is Nothing) Then
        Return 0
    End If
    Try
        Dim num2 As Long
        If Utils.IsHexOrOctValue(Value, (num2)) Then
            Return CInt(num2)
        End If
        num = CInt(Math.Round(Conversions.ParseDouble(Value)))
    Catch exception As FormatException
        Throw New InvalidCastException(Utils.GetResourceString("InvalidCast_FromStringTo", New String() { Strings.Left(Value, &H20), "Integer" }), exception)
    End Try
    Return num
End Function

내부적으로 변환을 호출하는 것을 볼 수 있습니다.ParseDouble.

따라서 Binary Worrier에서 이미 설명했듯이 Integer를 사용합니다.문자열 강제에 대한 구문 분석 및 주조에 대한 CInt.

여기에 실제 차이가 있습니다. Integer.parse("1.00")는 오류를 발생시킵니다.CInt("1.00")가 작동합니다.

<Data Type>.Parse메소드는 값을 나타내는 문자열에서 형식의 값을 추출하는 데 사용됩니다(예: "2"에서 2).C<Data Type>에 대해 하위 형식:)예으)으로 합니다.CInt("2")ORCInt(SomeDouble + SomeDouble)등).

언급URL : https://stackoverflow.com/questions/423820/integer-parse-vs-cint

반응형