DOBON.NETプログラミング掲示板過去ログ
ToStringを使った際の数値の丸めについて
題名: ToStringを使った際の数値の丸めについて
著者: HIPON
日時: 2009/07/30 17:50:24
ID: 25088
この記事の返信元:
(なし)
この記事への返信:
[25096]
Re[1]: ToStringを使った際の数値の丸めについて
ひらぽん
2009/07/31 12:51:45
[25099]
Re[1]: ToStringを使った際の数値の丸めについて
やじゅ
2009/07/31 16:06:03
ツリーを表示
環境/言語:[環境 XP .NET2.0]
分類:[.NET]
再度お世話になります。
さきほどの質問の続きなのです。
ToStringで小数は出でてくるようになりましたが、結果が丸められている
データが出てきてしまいました。
6桁必要なのですが、7桁目が丸められています。
例 0.000087 > 0.000088
目的は7桁目切捨ての値だったのですが、丸めのはずし方はないでしょうか?
以下、現在のコーディングです。
Dim wk As Single
Dim strColumn As String
〜〜〜〜〜〜〜〜〜〜〜〜〜
wk = "小数点付きの値"
strColumn = "INSERT INTO TABLE01(項目1,項目2,項目3)
strColumn = strColumn & " VALUES('" & DR1(0) & "','" & wk.ToString("0.000000") & "','" & DR1(1) & "')"
題名: Re[1]: ToStringを使った際の数値の丸めについて
著者: ひらぽん
URL:
http://blogs.yahoo.co.jp/hilapon/
日時: 2009/07/31 12:51:45
ID: 25096
この記事の返信元:
[25088]
ToStringを使った際の数値の丸めについて
HIPON
2009/07/30 17:50:24
この記事への返信:
(なし)
ツリーを表示
見苦しいですが、私の知りうる限りの最適解です。
Dim wk As Decimal = "小数点付きの値"
(Math.Floor(wk * 100000) * 0.00001).ToString("0.00000")
ちなみに数値を Decimal 型にしないと、(wk * 100000) の時点で誤差が発生します。
もっと美しい方法がありそうですが・・・見識ある方の出現を待ちましょう。
題名: Re[1]: ToStringを使った際の数値の丸めについて
著者: やじゅ
日時: 2009/07/31 16:06:03
ID: 25099
この記事の返信元:
[25088]
ToStringを使った際の数値の丸めについて
HIPON
2009/07/30 17:50:24
この記事への返信:
[25102]
Re[2]: ToStringを使った際の数値の丸めについて
HIPON
2009/07/31 16:37:09
[解決]
ツリーを表示
■No25088に返信(HIPONさんの記事)
> ToStringで小数は出でてくるようになりましたが、結果が丸められている
> データが出てきてしまいました。
> 6桁必要なのですが、7桁目が丸められています。
> 例 0.000087 > 0.000088
>
> 目的は7桁目切捨ての値だったのですが、丸めのはずし方はないでしょうか?
>
> Dim wk As Single
> Dim strColumn As String
なぜ、そうなるのかの理由が分からないと、本当の解決しないですよね。
小数点以下の、それぞれの桁数です。
・Double 14桁
・Single 6桁
・Decimal 最大28桁
Single型は、小数 6桁までなんですから、7桁目は丸められます。
あとは、どうすればいいか分かりますよね?
題名: Re[2]: ToStringを使った際の数値の丸めについて
著者: HIPON
日時: 2009/07/31 16:37:09
ID: 25102
この記事の返信元:
[25099]
Re[1]: ToStringを使った際の数値の丸めについて
やじゅ
2009/07/31 16:06:03
この記事への返信:
(なし)
ツリーを表示
ひらぽんさん、やじゅさんありがとうございます。
singleでは、6桁目が丸められるんですね。
全部Decimalで計算するようにして、丸めがでないようになりました。
ひらぽんさん、やじゅさんありがとうございました。
解決済み!
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
再度お世話になります。
さきほどの質問の続きなのです。
ToStringで小数は出でてくるようになりましたが、結果が丸められている
データが出てきてしまいました。
6桁必要なのですが、7桁目が丸められています。
例 0.000087 > 0.000088
目的は7桁目切捨ての値だったのですが、丸めのはずし方はないでしょうか?
以下、現在のコーディングです。
Dim wk As Single
Dim strColumn As String
〜〜〜〜〜〜〜〜〜〜〜〜〜
wk = "小数点付きの値"
strColumn = "INSERT INTO TABLE01(項目1,項目2,項目3)
strColumn = strColumn & " VALUES('" & DR1(0) & "','" & wk.ToString("0.000000") & "','" & DR1(1) & "')"