VB——单精度问题

fori=1to10an=int(rnd*1000)nexti我对这一小段程序的理解为:rnd时产生一个0到1之间的单精度,既然是单精度,字节数是不是就确定了?书上写的单... for i= 1 to 10
an=int(rnd*1000)
next i

我对这一小段程序的理解为:rnd 时产生一个0到1之间的单精度,既然是单精度,字节数是不是就确定了?书上写的单精度(浮点)为四字节。那不就是只能为小数点后只有两位例如:0.12 ?因为数字各占一个字节?

然后产生一个0到1000之间随机数?

希望大家给我详细点的解释,谢谢啊!
展开
 我来答
匿名用户
2013-10-26
展开全部
单精度4个字节,但不是文本存储为4个字节,存储原理如下

单精度浮点数的存储格式
符号 指数 尾数
|S| E | M |
31| 30 23| 22 0 ←位序号
其代表的真实的数值为 (-1)S*2e*m 其中e,m分别为E,M对应的实际数值,而E,M仅仅是一串二进制位。

符号位S(sign) - 1bit
0代表正号,1代表负号。(+0、-0视为相同?(欢迎补充资料))
指数位E(exponent) - 8bit
E的取值范围为0-255(无符号整数),实际数值e=E-127。
有时E也称为“移码”,或不恰当的称为“阶码”(阶码实际应为e)
尾数位M(mantissa) - 23bit
M也叫有效数字位(sinificand)、系数位(coefficient), 甚至被称作“小数”。
在一般情况下,m=(1.M)2,使得实际起作用范围为1≤尾数<2。

所以单精度小数最多可以有23bit,相当于小数点后7位小数。
数字存储可不是文本的

你的这个程序是把上面的最多7位小数,0<这个7位小数<1,乘以1000以后就是0<rnd*1000<1000,然后取整
最后得到的就是10个0-1000之间的随机数
匿名用户
2013-10-26
展开全部
既然rnd是参数0到1的随机数 那这个循环就是产生10个0到1000的随机数 int强转是把单精度 也就是小数点后面的值给损失掉了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式