- - PR -
Format関数で小数点以下の0を表示するには?
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-04-02 14:22
VB2005Expressを使用しています。
string型変数内に格納された0001500を 1500.000 と表示させたいと思っています。 そのため以下のコードを記述しましたが1500となってしまいます。 1500.000と表示させるにはどのようにしたらよろしいのでしょうか? Dim Sdata1 As Double Dim Ruikei As String Ruikei = "0001500" Sdata1 = CDbl(Ruikei) Sdata1 = Format(Sdata1, "00.0000") [ メッセージ編集済み 編集者: みかん 編集日時 2006-04-02 14:33 ] | ||||||||
|
投稿日時: 2006-04-02 14:48
最後に受け取る Sdata1 が Double だからですね。
冗長な書式 (表示しなくても良い小数点以下) は数値型では表現できないでしょう。 文字列として表現させたいんじゃないんですか? String.Format メソッドがお勧め && サンプルです。 指定の書式の文字列に変換する CLR の主役である型を意識するためにも Option Strict On にしましょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-02 22:40
じゃんぬねっと様
返答有難うございます。 ご指摘の通り、文字列として表現させたかったのですが Stringにすると0.000と表示されてしまうので Doubleにしていました。 それと、サンプルの紹介有難うございます。 もう少し、String.Format メソッドについて調べてから 進めてみたいと思います。 Option Strict Onの存在自体知りませんでした。 どのように修正すべきかも表示してくれるので 助かりました。 | ||||||||
|
投稿日時: 2006-04-03 01:34
Σ(;^o^) え? そうしたいんじゃなかったのでしょうか? もし整数部のことを気にしているのであれば、"#,##0.000" というような書式を使いましょう。
VB の場合「暗黙の型変換」という概念があったり、 「遅延バインディング」という概念があるため埋もれがちですが、 本来はやっぱり型は意識すべきことだと思います。 明示的なキャストをしないと予期せぬ事態が起きやすいです。 遅延バインディングについては、実行時にしか保証されないことがデメリットと言えるでしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-03 08:59
私も先日、Jitta さんのブログを読ませていただいている時に、「Option Strict」は「On」にしましょう、とあったので試したところ、いっぱいエラーが出ました(;_;) 原因は、Session変数の値を利用する際に明示的な型変換をしていなかったためです。 明示的なキャストをする方法には「CType」と「DirectCast」の方法がありますよね。これは、どのように使い分けるものなのでしょうか? | ||||||||
|
投稿日時: 2006-04-03 09:12
ソースはないかと試しに「CType DirectCast」で検索してみたら... CType と DirectCast の違い (自分とこだった... orz) 使い分けとしては参照型か値型かでしょうね。(そんな場面があまりないわけですが) まあ、型変換という意味では他にも色々ありますからね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-03 12:50
ありがとうございます。分かりやすいですね。 CInt と Int32.Parse と同じように、型変換を厳密に行なうかどうかという点も違うのですね。勉強になります。CType で Double型なんかをキャストしてたら、バグの温床になりそうですね・・・ | ||||||||
|
投稿日時: 2006-04-03 13:26
あー最初から、稍丼 さんが熱かった VSUG のスレ を出しておけば良かったですね。
そうですね、やっぱり型は厳密に意識すべきです。 2.0 だと、値型すべてに [その型].TryParse + [その型].Parse がサポートされているので、嬉しいです。 変換前の検証がその型のメンバになっていた方がわかりやすいですもんね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |