2017-10-11 18 views
0

古いvb.netプロジェクトをC#に変換して、\オペレータの動作の違いを混同する必要があります。なぜ117.5 19.5はvb.netで5を私に与えますか?

たとえば、私は7 \ 2 = 3(結果の整数部分を取るため)を理解することができます。しかし、なぜ117.5 \ 19.5 = 5?

私の電卓では117.5/9 = 6.025 ..で、上記のように私は5以外6を与える必要がありますか?

+3

\演算子は整数除算を要求します。したがって、オペランドを最初に整数に変換しなければならない場合、除算の結果は整数に切り捨てられます。したがって、あなたはおそらく118 \ 20 = 5になります.5の浮動小数点数が切り上げられたり、下がったりする場合は、2のべき乗の合計でない場合、プロセッサは近似する必要があります。 –

+0

それは浮動小数点数でそれを使用することを意味しないように整数除算です。 –

+0

@HansPassant - '.5'は常に正確に表現できませんか?それは '2^-1'なので –

答えて

0

The documentationによれば、除数と被除数の両方が整数型でなければならず、演算に先立って変換されます。

3

Visual Basic .NETの逆solidus演算子は、Integer division用です。除数と被除数の両方が整数型でなければならないので、値は暗黙的に整数に変換されます。したがって117.5 \ 19.5118 \ 20に変わります。

私の最初の提案は、暗黙的な変換を避けるためにOption Strict Onをオンにすることです。私の2番目の提案は、浮動小数点除算のための浮動小数点除算のためのものです。Dim foo As Double = 117.5/19.5

関連する問題