VB有没有精度比双精度(Double)更高的数值型数据

 我来答
网海1书生
科技发烧友

2016-11-13 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部

有的,首先Currency(货币型)是定点数(又叫变比整型数),占用8个字节(与Double一样),数值范围从-922,337,203,685,477.5808 到 922,337,203,685,477.5807,比Double的15位有效数字的精度要高。请注意,它的小数位是固定4位的哦,这就是它叫定点数的原因(而Double是浮点数,即小数点的位置是浮动的、变化的)。

此外,VB还有一种隐藏的数据类型Decimal,占用14个字节,这是个特殊的变比数,数值范围是 +/-79,228,162,514,264,337,593,543,950,335,如果含有小数,则小数点右边最多可以有28位数:+/-7.9228162514264337593543950335,最小的非零值为+/-0.0000000000000000000000000001

之所以Decimal是隐藏的,是因为它的运行效率很低,在执行大量运算时会严重影响程序速度,所以VB不推荐使用它。因此,要想在自己的程序中使用Decimal,必须经过特殊的处理:首先要把变量声明为Variant型,然后用CDec函数把数值进行转换后赋值给变量,这个变量就会自动变为Decimal型了。要注意的是,如果原数值的有效位数超过15位(也就是Duble型的最高精度),要先把这个数值存放到一个字符串变量中,然后再用CDec函数转换后赋值给Variant型变量,听起来够复杂吧?下面是个例子:

Private Sub Form_Click() '点击窗体运行
Dim d As Variant, s As String
s = "12345678901234567890"'这个数如果用Duble显示会变成1.23456789012346E+19
d = CDec(s)
Print d '现在显示的则是12345678901234567890
Print d + 10000 '可以直接参与运算的,运算结果的精度也是超过Duble的
End Sub
K_BEAT
2016-11-13 · TA获得超过1245个赞
知道小有建树答主
回答量:879
采纳率:91%
帮助的人:401万
展开全部

答案是有的,它就是

Decimal 数据类型

MSDN 参考:

Decimal 变量存储为 96 位(12
个字节)无符号的整型形式,并除以一个 10 的幂数。这个变比因子决定了小数点右面的数字位数,其范围从 0 到 28。变比因子为
0(没有小数位)的情形下,最大的可能值为 ±79,228,162,514,264,337,593,543,950,335。而在有 28
个小数位的情况下,最大值为 ±7.9228162514264337593543950335,而最小的非零值为 ±0.0000000000000000000000000001。

注意:此时,Decimal 数据类型只能在 Variant 中使用,也就是说,不能声明一变量为 Decimal
的类型。不过可用 CDec 函数,创建一个子类型为 Decimal 的 Variant。


如何声明 Decimal 数据类型?

' 先定义 Variant 类型.
Dim decNum As Variant
' 使用 CDec 函数转换成 Decimal 数据类型
decNum = CDec(decNum)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式