2016-09-29 5 views
0

В одной из моих проверки программы мне нужно проверить, не определено ли результирующее число, сохраненное в сеансе (это связано с тем, что одна из формул может иметь дивиденд от нуля).Как проверить, является ли число математически неопределенным или неопределенным в vb.net

То, что я пытался до сих пор (и это может быть очень неэффективный способ сделать это) заключается в следующем:

Dim x As Double 
    Dim valid As Boolean = True 
    Try 
     Double.TryParse(Session("result"), x) 
    Catch ex As Exception 
     valid = False 
    End Try 

Я понял, что если число хранится в сессии, является неопределенным или не определено, то функция TryParse не удастся. Как вы думаете, лучший способ поймать неопределенные номера, хранящиеся в объекте?

P.S. К сожалению, я не могу проверить функцию, в которой возникнет сеанс («результат»). Это связано с тем, что другой модуль, созданный другим кодером, просто передает это модулю, который я кодирую.

+0

'Dim действует как булевы = Double. TryParse (сеанс («результат»), x) '. 'Session (" result ")' возвращает 'Nothing', если' result' не определен – Slai

+0

Здравствуйте! проблема заключается не в том, что сессия ничего не возвращает. Сессия приводит к математически неопределенному или неопределенному числу (которое возникает из-за деления числа на ноль или бесконечность или на умножение бесконечностей и т. Д.). – lulutanseco

+0

@lulutanseco - Какой тип значения хранится в 'Session (« result »)'? – Enigmativity

ответ

2

System.Decimal не NaN или бесконечности, так что вы можете использовать его вместо:

Dim valid = Decimal.TryParse(Session("result").ToString, x) 

Это приведет к False если Session("result") является Double.NaN, .PositiveInfinity или .NegativeInfinity

+0

yay! Я понял! Спасибо! : * – lulutanseco