今頃何言ってるのって突っ込まないでね。
数字を "("/")"で挟んた文字列は数字と判定されます。
Debug.Print(IsNumeric("(35.6)")) ' strict Offの時は 実行可能, onの時は 型エラーになる
これは既知だったのですが、これを数値に変換すると、期待しない結果になりました。
消費税の内税表記で "(456)"等の出力を扱う際に、"(",")" が付いたまま計算している部分があって、期待外の結果になっのです。
(*) 文字列を計算している時点でバグなのですが、瓢箪から駒でした。
Dim i0 As Integer = Int("(35.6)") ' strict Offの時は 実行可能, onの時は 型エラーになる(
Dim i1 As Integer = CInt("(35.6)")
Dim i2 As Integer = DirectCast("(35.6)", Integer) '文字列からDecimalへの文法エラー
Dim i3 As Integer = CType("(35.6)", Integer)
Dim i4 As Integer = Integer.Parse("(35.6)") '型Errorで例外発生
Dim i2 as Integer の行は、 構文ErrorでCompilerに怒られます。
他の i1,i3,i4 は Compileできます。
i0 はstrictの指定で変わります。
i0,i1,i3 共に 値は -35.6 の負数になります。
i4の Parse は 例外が発生します。
うーん。MSDNを見ても それらしき記述はない ( 標準の数値書式指定文字列: http://msdn2.microsoft.com/ja-jp/library/dwhawy9k(VS.80).aspx )
"(数字)"は負の表示の一つの形式...読んだ記憶はあるのだが、イザ探すとなると見つからないものです..orz
いずれしても、このような挙動をするのだから受け入れるしかないのですが、型変換子によって挙動が違うのは解せないなぁ。
(*)誤字訂正