CIntを使用して浮動小数点数を整数に変換するか、CType
その数の値を丸めます。このInt
関数Math.Floor
は、浮動小数点数を整数に変換して負の無限大に丸めるために使用できますが、どちらの関数も浮動小数点値を返します。これはInteger
、キャストなしで値として暗黙的に使用することはできません。
に代わる簡潔で慣用的な方法はありIntVar = CInt(Int(FloatingPointVar));
ますか?パスカルが含まれRound
、Trunc
返された関数Integer
; VB.NET言語または.NETFrameworkのいずれかに同等のものはありますか?
同様の質問ですが、CIntはDouble値を一貫して丸めません-小数部分を削除するにはどうすればよいですか?2011年に質問されましたが、浮動小数点数を整数に変換する方法があるかどうかを尋ねただけです。回答は2段階のプロセスを示唆していましたが、フレームワークに何が存在するか、何が存在しないかについては深く掘り下げていませんでした。フレームワークにPascalに類似したものがないことを信じるのは難しいと思います Trunc
浮動小数点オペランドを使用してグラフィカルな演算を実行する場合、このようなことが頻繁に必要になるため、関数[このような演算は個別のピクセルとしてレンダリングする必要があり、round(x)-1 = round(x -1)+/-(2 ^ 31-1)の範囲内に収まるすべてのxに対して。このような演算が丸められている場合でも、上記の特性を確保するために、最も近い値に丸めるのではなく、Floor(x + 0.5)を使用する必要があります]
ちなみに、C#では、表記法を使用する型キャストはDouble
ゼロInt
に(type)expr
丸めるセマンティクスを使用します。これがVB.NETの動作と異なるという事実は、一方または両方の言語が、フレームワークに含まれている明示的な変換演算子ではなく、独自の変換ルーチンを使用していることを示しています。フレームワークは変換演算子を定義する必要があると思われますか?そのような演算子はフレームワーク内に存在しますか?それは何をするためのものか?C#やVB.NETから呼び出す方法はありますか?