如何在这些点之间生成随机双精度?

发布于 2024-09-29 06:55:39 字数 134 浏览 5 评论 0原文

37.807614 to 37.786996 

随机生成的 double 必须具有与上述相同的精度(位数)。

例如,37.792242 会很好,而 37.7823423425 会很糟糕。

37.807614 to 37.786996 

The randomly generated double must have the same precision (num of digits) as those above.

For example, 37.792242 would be good, whereas 37.7823423425 would be bad.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淑女气质 2024-10-06 06:55:39
round(random.uniform(num1, num2), 6)

不过,由于 IEEE 754 不准确,您偶尔会得到以 ...0001...9999 结尾的数字。

round(random.uniform(num1, num2), 6)

You will occasionally get numbers that end with ...0001 or ...9999 or so due to IEEE 754 inaccuracies though.

吾性傲以野 2024-10-06 06:55:39

不确定我是否遗漏了一些东西,但为了避免舍入,并且由于您想要精确的精度,所以使用整数然后通过除法转换为浮点不是最简单的吗?即

offset = float(random.randint(0,20618))
数字 = (偏移量 + 37786996.0) / 1000000.0

Not sure if I'm missing something, but to avoid rounding, and since you want exactly that precision, isn't it easiest to work in integers and then convert to floating point by division? I.e.

offset = float(random.randint(0,20618))
num = (offset + 37786996.0) / 1000000.0

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文