- - PR -
String.Formatの変換について
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-03-13 11:35
みなさま、おつかれさまです!! 下のようなコードでString.Formatを使用し
Double型からString型へ変換していますが小数点15桁目で四捨五入されてしまいます。 四捨五入されずに変換することは可能でしょうか? もしくはDouble型からString型へ四捨五入されずに代入することはできますか? Dim str As String Dim dbl As Double dbl = "0.1234567890123456789" str = String.Format("{0:0##################################}", dbl) 結果:0.123456789012346 よろしくお願いします。 | ||||||||||||
|
投稿日時: 2006-03-13 11:41
すいません!!
コードの3行目は↓です dbl = 0.12345678901234568 | ||||||||||||
|
投稿日時: 2006-03-13 11:42
double型の有効桁数を超えてます。
string.Formatとは関係なく、代入した時点で丸められています。 _________________ 音速の定時退社! | ||||||||||||
|
投稿日時: 2006-03-13 11:44
System.Double 型の有効桁数は「15〜16 桁程度」です。 なので、そもそも Double 型として扱うのが誤りだと思います。
そもそも「型」がおかしいですね。 文字列として dbl に格納しようとしています。 この時点で丸められるでしょう。
現状のソースですと、dbl に格納した時点で値が期待通りになっていないので不可能です。 Double.ToString("R") する以前に、値がすでに丸められていますからね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-03-13 11:51
色々書いているうちにかぶりんこしてしまいましたね... (;_ _)
とりあえず、投下してみます。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-03-13 11:57
気付かなかった。。。orz _________________ 音速の定時退社! | ||||||||||||
|
投稿日時: 2006-03-13 12:30
Yamさん、じゃんぬねっとさん、ありがとうございます。
じゃんぬねっとさん、本当に毎回お世話になっています。m(..)m dbl.ToString("R")の方法があるとは!!! これでやってみようと思います。 | ||||||||||||
|
投稿日時: 2006-03-13 12:41
Yamさん、じゃんぬねっとさん MSDNライブラリでdbl.ToString("R")を調べました。 Rはラウンドトリップ数値書式指定なんですね。 最大で17桁まで設定されるそうで。 であれば十分です。勉強になりました!! |