2017-03-09 97 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