Excel 用 VBA 随机数如何保留一位小数
答案:4 悬赏:70
解决时间 2021-03-15 13:55
- 提问者网友:傀儡离开
- 2021-03-14 20:51
c = Round(Rnd * 2000 + 8000, 0) 产生的是整数,c = Round(Rnd * 2000 + 8000, 0) / 10 为什么产生的小数位数特别多?c = Round(Rnd * 200 + 800, 1) 小数位数也特别多?VBA宏如何产生800.0~1000.0一位小数的随机数?
最佳答案
- 二级知识专家网友:风格单纯
- 2021-03-14 21:31
确实如你所述,但原因不知道。不过可用下面表达式间接解决:
C=Int(Rnd * 2000 + 8000 +0.5) / 10
…………
我后来研究了一下,特此补充一下:
检查代码中的C值,也只有一位小数,但显示到工作表中就有多位小数了。
另外如果用工作表四舍五入函数就没问题:WorksheetFunction.Round(Rnd * 200 + 800, 1)
真不知道是怎么回事!
C=Int(Rnd * 2000 + 8000 +0.5) / 10
…………
我后来研究了一下,特此补充一下:
检查代码中的C值,也只有一位小数,但显示到工作表中就有多位小数了。
另外如果用工作表四舍五入函数就没问题:WorksheetFunction.Round(Rnd * 200 + 800, 1)
真不知道是怎么回事!
全部回答
- 1楼网友:温柔刺客
- 2021-03-15 00:49
你遇到的问题好像是round函数造成的,用int(rnd * 2000 + 8000, 0) / 10 没有任何问题~~~
具体原因不明
- 2楼网友:寂寞的炫耀
- 2021-03-14 23:55
单元格以单精度表示了结果,所以然。定义一下以,为double,如果single 则变成好近似数dim c as doublec = format(Rnd * 200 + 800, "#0.00") range("a1")=c
- 3楼网友:我的任性你不懂
- 2021-03-14 22:34
= 800+ROUND(RND*200,1)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯