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

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

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

Re[2]: Decimalが保持している表示小数点桁数を取得したい


(過去ログ 108 を表示中)

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

■64106 / inTopicNo.1)  Decimalが保持している表示小数点桁数を取得したい
  
□投稿者/ まり (7回)-(2012/11/08(Thu) 08:57:24)

分類:[VB.NET/VB2005 以降] 

いつも参考にしています

Decimalが保持している小数点桁数を取得したいのですが
ToStringして自分で数える以外に方法はあるでしょうか?

            Dim Value As New Decimal
            Decimal.TryParse("-100.00", Value)
            Dim ValueString As String = Value.ToString
            Dim Index As Integer = ValueString.IndexOf(".")

            Dim Digit As Integer = 0
            If Index > -1 Then Digit = ValueString.Length - Index - 1

よろしくお願いします

環境 .Net FrameWork 2.0

引用返信 編集キー/
■64107 / inTopicNo.2)  Re[1]: Decimalが保持している表示小数点桁数を取得したい
□投稿者/ みきぬ (12回)-(2012/11/08(Thu) 09:17:27)
思いつきだけど、GetBits() した結果の整数部分と指数部分を解析すればできるかも。
でも ToString() の結果を使ったほうがてっとり早い予感。

単に ToString() すると指数表記になる場合があるので、ToString("0.### … ###") とするか(#は29個くらい?)
いっそ指数形式で統一して仮数部と指数部を読んだほうがいいかも。
引用返信 編集キー/
■64108 / inTopicNo.3)  Re[1]: Decimalが保持している表示小数点桁数を取得したい
□投稿者/ 魔界の仮面弁士 (81回)-(2012/11/08(Thu) 10:11:27)
No64106 (まり さん) に返信
> Decimalが保持している小数点桁数を取得したいのですが
> ToStringして自分で数える以外に方法はあるでしょうか?

Dim 小数部桁数 As Integer = (Decimal.GetBits(  Value  )(3) And &HFF0000I) >> 16

でどうでしょう。整数部の桁数は数えないのですよね?


> 環境 .Net FrameWork 2.0
.Net FrameWork ではなく、
.NET Framework ですね。


> Dim Value As New Decimal
New は不要です。


> Dim ValueString As String = Value.ToString
> Dim Index As Integer = ValueString.IndexOf(".")

小数点表記は、OS の地域設定によって異なります。
文字列処理する場合は、ToString に CultureInfo を明示しましょう。

「-123,456,789.00」…日本、米国、台湾など
「-123.456.789,00」…ドイツ、ポルトガル、ベトナムなど
「-123&nbsp;456&nbsp;789,00」…フランス、ロシア、トルコなど
「-12,34,56,789.00」…ヒンディー語(インド)など

引用返信 編集キー/
■64109 / inTopicNo.4)  Re[2]: Decimalが保持している表示小数点桁数を取得したい
□投稿者/ 魔界の仮面弁士 (82回)-(2012/11/08(Thu) 10:21:54)
No64107 (みきぬ さん) に返信
> 単に ToString() すると指数表記になる場合があるので、
どういう場合を指しているのか、具体例を出してもらえると。


> ToString("0.### … ###") とするか(#は29個くらい?)
それでは駄目でしょう。

CDec("1.10").ToString() → "1.10"
CDec("1.100").ToString() → "1.100"

ですが、0.#### 書式を指定すると、両者とも "1.1" になってしまうはずです。
引用返信 編集キー/
■64118 / inTopicNo.5)  Re[2]: Decimalが保持している表示小数点桁数を取得したい
□投稿者/ まり (8回)-(2012/11/08(Thu) 11:48:37)
みきぬさん、仮面弁士さん
回答ありがとうございました

>Dim 小数部桁数 As Integer = (Decimal.GetBits( Value )(3) And &HFF0000I) >> 16

このやり方で桁数取得できました
解決済み
引用返信 編集キー/
■64126 / inTopicNo.6)  Re[3]: Decimalが保持している表示小数点桁数を取得したい
□投稿者/ みきぬ (13回)-(2012/11/08(Thu) 13:50:54)
No64109 (魔界の仮面弁士 さん) に返信
> ■No64107 (みきぬ さん) に返信
>>単に ToString() すると指数表記になる場合があるので、
> どういう場合を指しているのか、具体例を出してもらえると。

私の勘違いでした。すみません。
ToString() や ToString("g") のように精度を指定しない場合は大丈夫ですね。

>>ToString("0.### … ###") とするか(#は29個くらい?)
> それでは駄目でしょう。
>
> CDec("1.10").ToString() → "1.10"
> CDec("1.100").ToString() → "1.100"
>
> ですが、0.#### 書式を指定すると、両者とも "1.1" になってしまうはずです。

こちらも私の勘違いでした。どうも失礼しました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -