>source

최근에 nullable double의 이상한 동작을 발견했습니다. nullable 변수를 정확하게 설정된 숫자로 문자열로 변환해야하므로 방법을 사용하고 있습니다. .ToString(format) . 필요에 따라 변환 된 숫자를 가져 오는 대신 앞서 언급 한 nullable 변수에이 메서드를 적용하면이 숫자의 첫 번째 숫자 만 얻습니다 (예제는 아래에 나와 있습니다). 물론 nullable을 double로 캐스트 할 수 있으며 해결하지만 왜 발생합니까? 귀하의 의견에 감사드립니다.

예:

'Nullable Double
Dim value As Double? = 867
Dim convertedValue As String = value.ToString("0.00000")
Console.WriteLine(convertedValue)
'Output: 8
'Not nullable Double
Dim value As Double = 867
Dim convertedValue As String = value.ToString("0.00000")
Console.WriteLine(convertedValue)
'Output: 867.00000

  • 답변 # 1

    호출하려는 메서드가 존재하지 않습니다. ㅏ Double? 실제로 Nullable(Of Double) . 호출하는 모든 메서드는 Nullable(Of T) 구조. 어떻게 그 유형이 ToString 숫자 형식 문자열을 인수로 취한 오버로드 T 숫자가 아닌 유형이 될 수 있습니까? 여기에 대한 문서가 있습니다. Nullable(Of T).ToString 방법:

    https://docs.microsoft.com/en-au/dotnet/api/system.nullable-1.tostring?view=net-5.0

    보시다시피, 이러한 과부하는 없습니다. Double 유형:

    https://docs.microsoft.com/en-au/dotnet/api/system.double.tostring?view=net-5.0

    숫자 형식 문자열을 사용하려면 숫자와 Double? 숫자가 아닙니다. 다음은 값이 1이면 숫자로 형식을 지정하고 일반적으로 그렇지 않은 경우 사용할 수있는 방법입니다.

    Private Function FormatNullableDouble(number As Double?, format As String) As String
        Return If(number.HasValue,
                  number.Value.ToString(format),
                  number.ToString())
    End Function
    
    

    다음과 같이 호출 할 수 있습니다.

    Dim convertedValue As String = FormatNullableDouble(value, "0.00000")
    
    

  • 이전 sql - "재 활성화 된"고객에게 판매 된 금액 찾기
  • 다음 oracle - SQL Developer Linux에서 간단한 SQL 요청을 수행하는 방법은 무엇입니까?