|
分類:[VB.NET]
分類:[VB.NET]
2005/07/12(Tue) 20:59:33 編集(投稿者) 2005/07/12(Tue) 20:59:26 編集(投稿者) 2005/07/12(Tue) 20:59:22 編集(投稿者)
いつも掲示板を拝見しお世話になっております。
サンプルの”指定した精度の数値に切り捨てする”を参考に させていただき、切捨てを行う関数を作成したのですが 小数部が13桁を超える値ですと、勝手に四捨五入されてしまい 困っております…。
小数点第1位を切り捨てて1001という値が欲しいのですが、1002が帰ってきます。 どうやら vValue * vCoef の部分で1002と四捨五入されてしまっているようです。 自力で整数部と小数部を分けて小数部を13桁以内に収めようともしました がtoStringした時点でまた四捨五入されるようです。 (toString.indexof(".")等を用いました)
このような場合は一体どうすればよいのでしょうか…。お知恵をお貸し下さい。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dat As Decimal = "1001.99999999999999" TextBox1.Text = ToRoundDown(dat, 0)
End Sub
Public Shared Function ToRoundDown(ByVal vValue As Double, ByVal iDigits As Integer) As Double
Dim vCoef As Double = Math.Pow(10, iDigits)
If vValue > 0 Then Return Math.Floor(vValue * vCoef) / vCoef Else Return Math.Ceiling(vValue * vCoef) / vCoef End If
End Function
|