VB.NETには、整数部の端数処理用関数は用意されていますが、小数部の端数処理用関数が用意されていません。
そのため、小数部の端数処理を行う場合には、端数処理用のロジックを自前で作成する必要があります。

計算の都度、端数処理用のロジックを用意するのは面倒なので、関数を作成してみました。
関数名は、VB.NETのMathクラスに用意されている端数処理用メソッドと同じです。
(Mathクラスの端数処理用メソッドに有効桁数を明示するための引数を1つ追加し、この引数に指定した桁までを有効桁数として端数処理を行った数値を返します)

ここで言う端数処理用メソッドは、以下を指します。
 ・Round(四捨五入)
 ・Truncate(切捨て)
 ・Ceiling(切上げ)

端数処理用メソッドは、こちら(fraction.zip)からダウンロードできます。
(今回は、ソースコードで提供しています)

以下、サンプルの説明です。
【コード(一部抜粋)】
'切り捨て
Public Function Truncate( _
ByVal value As Decimal, _
ByVal position As Integer) As Decimal

Dim result As Decimal
result = Math.Truncate((value * Math.Pow(10, position))) / Math.Pow(10, position)
Return result
End Function


《説明》
どの関数も以下の手順で処理することによって、小数部の端数処理を実現しています。

1.指定した数値の桁を調整する。
 →有効桁数として指定した桁が1の位になるように調整する。
  ・有効桁数が正の場合、小数部に対する端数処理とみなす。
   →「値×10の有効桁数乗」で調整する。
  ・有効桁数が負の場合、整数部に対する端数処理とみなす。
   →「値÷10の有効桁数乗」で調整する。
2.項番1で調整した数値に対し、整数部の端数処理関数を使う。
 →これで指定した有効桁に対する端数処理ができる。
3.項番2で端数処理した数値を元の桁に調整する。
 →項番1の調整方法の逆の計算で、元に戻す。
  乗算した場合は、「値÷10の有効桁数乗」する。
 ・除算した場合は、「値×10の有効桁数乗」する。
4.項番3の結果を返す。

【補足説明】
・小数を扱う場合、正確な数値で計算したいのであれば、Decimal型を利用する必要があります。
 →Double型だと、「0.1」等の値を正確に表現することができません。
  機会があれば、この辺の説明も記事にするかもしれません。
・べき乗とは、指数を使った表現で、「2の3乗」等のような計算のことです。