C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

小数点を含む切捨てについて


(過去ログ 1 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■845 / inTopicNo.1)  小数点を含む切捨てについて
  
□投稿者/ らいぶ 二等兵(1回)-(2005/07/12(Tue) 20:58:36)

分類:[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


0
引用返信 編集キー/
■846 / inTopicNo.2)  Re[1]: 小数点を含む切捨てについて
□投稿者/ 魔界の仮面弁士 曹長(21回)-(2005/07/12(Tue) 21:58:37)

分類:[VB.NET] 

2005/07/12(Tue) 22:05:34 編集(投稿者)

# 何故、引用してない所まで色が付いてしまうのだろう? (泣)
 
> このような場合は一体どうすればよいのでしょうか…。お知恵をお貸し下さい。
 
Doubleではなく、Decimalで演算させてみるとか。
手元に環境が無いので確認できませんが、こんなイメージかな。(未テスト)
 
Shared Function ToRoundDown@(ByVal vValue@, ByVal iDigits As Byte)
Dim vCoef As Decimal = CDec(10 ^ iDigits)
If vValue < 0 Then vCoef *= -1
Return Decimal.Floor(vValue * vCoef) / vCoef
End Function


0
引用返信 編集キー/
■847 / inTopicNo.3)  Re[2]: 小数点を含む切捨てについて
□投稿者/ じゃんぬ 神(96回)-(2005/07/13(Wed) 09:22:26)
じゃんぬ さんの Web サイト

分類:[VB.NET] 

うーん、やっぱり Decimal に書き換えておくべきでしたかね。
ヒマがあれば、更新しておきますね。

> 何故、引用してない所まで色が付いてしまうのだろう? (泣)

PRE の時でかつ、修正を行うとそうなってしまうみたいです。

0
引用返信 編集キー/
■849 / inTopicNo.4)  Re[3]: 小数点を含む切捨てについて
□投稿者/ らいぶ 二等兵(2回)-(2005/07/13(Wed) 13:34:58)

分類:[VB.NET] 

ご回答ありがとうございました。

全てDecimal型で計算を行うことにより解決いたしました。

本当に助かりました。感謝いたしております。

解決済み
引用返信 編集キー/
■850 / inTopicNo.5)  Re[4]: 小数点を含む切捨てについて
□投稿者/ 中博俊 神(99回)-(2005/07/13(Wed) 15:16:41)
中博俊 さんの Web サイト

分類:[VB.NET] 

だからDecimalにしようよっていったのに(^^

0
引用返信 編集キー/
■860 / inTopicNo.6)  Re[5]: 小数点を含む切捨てについて
□投稿者/ じゃんぬ 神(97回)-(2005/07/14(Thu) 18:54:23)
じゃんぬ さんの Web サイト

分類:[VB.NET] 

No850に返信(中博俊さんの記事)
> だからDecimalにしようよっていったのに(^^

うーむ、休み明けまでには直しておきますね。(^^)

解決済み
引用返信 編集キー/
■865 / inTopicNo.7)  Re[6]: 小数点を含む切捨てについて
□投稿者/ 中博俊 神(102回)-(2005/07/14(Thu) 22:57:05)
中博俊 さんの Web サイト

分類:[VB.NET] 

ま、そのうちにやろうねぇ(^^

0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -