如何写个程序把Int,Double等数据类型的取值范围求出来

gooore 2011-08-15 05:02:56
如题,

多谢
...全文
353 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-08-17
  • 打赏
  • 举报
回复
数据类型概述


以下表格显示所支持的数据类型,以及存储空间大小与范围。

数据类型 存储空间大小 范围

Byte 1 个字节 0 到 255
Boolean 2 个字节 True 或 False
Integer 2 个字节 -32,768 到 32,767
Long
(长整型) 4 个字节 -2,147,483,648 到 2,147,483,647
Single
(单精度浮点型) 4 个字节 负数时从 -3.402823E38 到 -1.401298E-45;正数时从 1.401298E-45 到 3.402823E38
Double
(双精度浮点型) 8 个字节 负数时从 -1.79769313486232E308 到
-4.94065645841247E-324;正数时从4.94065645841247E-324 到 1.79769313486232E308
Currency
(变比整型) 8 个字节 从 -922,337,203,685,477.5808 到 922,337,203,685,477.5807
Decimal 14 个字节 没有小数点时为 +/-79,228,162,514,264,337,593,543,950,335,而小数点右边有 28 位数时为 +/-7.9228162514264337593543950335;最小的非零值为 +/-0.0000000000000000000000000001
Date 8 个字节 100 年 1 月 1 日 到 9999 年 12 月 31 日
Object 4 个字节 任何 Object 引用
String
(变长) 10 字节加字符串长度 0 到大约 20 亿
String
(定长) 字符串长度 1 到大约 65,400
Variant
(数字) 16 个字节 任何数字值,最大可达 Double 的范围
Variant
(字符) 22 个字节加字符串长度 与变长 String 有相同的范围
用户自定义
(利用 Type) 所有元素所需数目 每个元素的范围与它本身的数据类型的范围相同。


注意 任何数据类型的数组都需要 20 个字节的内存空间,加上每一数组维数占 4 个字节,再加上数据本身所占用的空间。数据所占用的内存空间可以用数据元数目乘上每个元素的大小加以计算。例如,以 4 个 2 字节之 Integer 数据元所组成的一维数组中的数据,占 8 个字节。这 8 个字节加上额外的 24 个字节,使得这个数组所需总内存空间为 32 个字节。

包含一数组的 Variant 比单独的一个数组需要多 12 个字节。
c_cyd2008 2011-08-17
  • 打赏
  • 举报
回复

Dim i As Integer
minValue = -(2 ^ (LenB(i) * 8 - 1))
maxValue = 2 ^ (LenB(i) * 8 - 1) - 1
MsgBox "Integer 的范围:" & minValue & "~" & maxValue

Dim l As Long
minValue = -(2 ^ (LenB(l) * 8 - 1))
maxValue = 2 ^ (LenB(l) * 8 - 1) - 1
MsgBox "long 的范围:" & minValue & "~" & maxValue
gooore 2011-08-17
  • 打赏
  • 举报
回复
主要还是想要算法,就是取值范围的算法

多谢帮助。
chibai001 2011-08-16
  • 打赏
  • 举报
回复
[code=V]V[/code]
chinaboyzyq 2011-08-15
  • 打赏
  • 举报
回复

Private Sub Command1_Click()
Dim x As Integer
Debug.Print f(x)
Dim y As Long
Debug.Print f(y)
Dim z As Double
Debug.Print f(z)

End Sub

Private Function f(a) As String
Select Case VarType(a)
Case vbInteger
f = "-32,768 到 32,767"
Case vbLong
f = "-2,147,483,648 到 2,147,483,647"
Case vbDouble
f = "-1.79769313486232E308 到 -4.94065645841247E-324;正数时从4.94065645841247E-324 到 1.79769313486232E308"
'case ...
'case ...自已去查msdn吧。
'....
'...
End Select

End Function


chinaboyzyq 2011-08-15
  • 打赏
  • 举报
回复
改vb.net吧:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Int16, b As Double
MsgBox(a.MaxValue & "~" & a.MinValue & "|" & b.MaxValue & "~" & b.MinValue)

End Sub
cqq_chen 2011-08-15
  • 打赏
  • 举报
回复
常量!这是常量

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧