2017-03-09 79 views
0

我的代碼的一部分計算兩個數字的乘積,結果被存儲到一個聲明爲十進制的變量中,問題是當我嘗試將結果顯示給文本框時,它不顯示結果的整個值。如何顯示算術運算的所有十進制值?

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 

從我已搜查十進制數據類型最多可容納28-29位小數,但顯示結果時,它被轉換爲double(數據類型)。

另外,result = value1/value2是存儲到內存的結果的整體值嗎?

+2

[數字格式字符串](https://msdn.microsoft.com/en-us/library/0c899ak8(V = vs.110)的.aspx) – Plutonix

回答

2

您正在計算double值並將其值和精度分配給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位數字(小數點不計數)。

要獲得所需的結果,請使用十進制值執行除法。

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

+0

每當我試圖改變所有的變量鍵入爲十進制,並且(Option Strict On),value2給出錯誤「Option Strict On不允許從'Double'到'Decimal'的隱式轉換」;爲什麼會出現此錯誤,是十進制數據類型的範圍之外的值? 你能分享關於這些數據類型的更多信息,因爲我需要在計算上使用它們,因爲我需要保留儘可能多的小數。 – 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 /下載/ details.aspx?ID = 15039)。 – TnTinMn

+1

@AnitoLabs,一般來說,當你使用Option Strict Off的時候,你基本上是在告訴編譯器「請讓我感覺好我的代碼並編譯這個爛攤子,我不關心準確性或速度,重要的是我的自我免於被告知我的代碼很糟糕。「然後,編譯器會盡力通過嘗試找到一種方法來重寫代碼,並使用滿足目標類型的顯式類型轉換來盡最大努力履行該請求。代碼的這種重寫通常會導致完全不合邏輯的混亂,但會產生意想不到的結果。 – TnTinMn