2017-03-09 8 views
0

私のコードの一部は、2つの数字の積を計算します。その結果は10進数で宣言された変数に格納されます。結果はテキストボックスに表示しようとすると結果全体の値が表示されません。私は小数点データ型は28-29小数点以下まで保持できる検索しましたが、結果が表示されている場合、(データ型)をdoubleに変換されているものから、算術演算の10進値をすべて表示する方法は?

Dim value1 As Integer = 1576000 
Dim value2 As double = 7620.22 
Dim result As Decimal 

result = value1/value2 ''result from a calculator is 206.81817585319059029.... 

textBox1.text = result.ToString ''textbox displays 206.818175853191 

また、result = value1/value2はメモリに格納された結果の全体の値ですか?

+2

[数値書式文字列](https://msdn.microsoft.com/en-us/library/0c899ak8(V = vs.110).aspxの) – Plutonix

答えて

2

二重の値を計算し、その値と精度をDecimal変数に代入しています。

コードがOption Strict Onで設定されていた場合、IDEはあなたに何が起こっているのかを知らせるでしょう。 Option Strict Onでは、この文:

result = value1/value2

がエラーを与える:

Option Strict On disallows implicit conversions from 'Double' to 'Decimal'

ダブルスは15桁を持っています。 206.818175853191の桁数を数えると、15桁の数字が表示されます(小数点はカウントされません)。

希望の結果を得るには、10進値で除算を実行します。

Dim result2 As Decimal = CDec(value1)/CDec(value2)

+0

私はすべての変数を変更しようとするたびに(Option Strict On)を指定すると、value2はエラー "Option Strict Onは暗黙的な変換を 'Double'から 'Decimal'に許可しません。なぜこのエラーが発生するのですか、10進データ型の範囲外の値ですか? これらのデータ型についてより多くの情報を共有することができます。なぜなら、それらを10進数で保存する必要がある計算で使用する必要があるからです。 – AnitoLabs

+0

@AnitoLabs、答えに示されている構文を使用すると、Decimalに変換される値がDecimal型の範囲の制限内にある場合、エラーは発生しません。私は、基本的なプログラミングと型変換に関するチュートリアルをスプーンでフィードしません。あなたは言語に慣れ親しんでいなければなりません。すぐに入手できる情報源はたくさんあります。オンラインの[Visual Basic言語リファレンス](https://msdn.microsoft.com/en-us/library/sh9ywfdk.aspx)または[Visual Basic言語仕様11.0](https://www.microsoft)をダウンロードしてください。 .com/en-us/download/details.aspx?id = 15039)。 – TnTinMn

+1

@AnitoLabs一般的に、Option Strict Offで作業するときは、コンパイラに「私のコードについて気分を良くし、この混乱をコンパイルしてください」と言っていますが、精度や速度については気にしません。私の自我は、私のコードが悪臭を帯びていると言われることから免れられます。コンパイラは、ターゲットタイプを満たす明示的な型変換を使用してコードを書き直す方法を見つけることによって、その要求を守るために最善を尽くします。このコードの書き直しは、結果的に予期しない結果を招くこともあります。 – TnTinMn

関連する問題