- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我问的主要是出于学术兴趣。
documentation表示 std::uniform_real_distribution
生成 [a,b)
范围内的数字,其中 a
和 b
是构造函数参数。
由于上限是独占的,我希望 .max()
返回小于 .b()
的最大可表示值。
但是我在 GCC、Clang 和 MSVC 上都得到了 .b() == .max()
。 (对于 float
、double
和 long double
。)为什么?
#include <iostream>
#include <iomanip>
#include <random>
int main()
{
auto d = std::uniform_real_distribution<long double>(0, 1);
std::cout << std::setprecision(1000);
std::cout << d.min() << '\n'; // 0
std::cout << d.a() << '\n'; // 0
std::cout << d.max() << '\n'; // 1 <- Here I expect 0.99999...
std::cout << d.b() << '\n'; // 1
}
我找到了 this note说一些常见的实现仅将 [a,b]
范围用于 float
。它可以为 float
解释 .b() == .max()
,但不能为 double
和 long double
.
I think it might be educational to also print
std::nextafter(d.b(), d.a())
. – StoryTeller
对于 long double
,它的计算结果为 0.9999999999999999999457898913757247782996273599565029144287109375
,这是我期望从 .max()
得到的结果。
最佳答案
我不认为这个错误是关于 float 的,而是一般的 float 。
错误已经在 VS-Dev-Community关于 doubles 解决此问题的地方。但是,他们声称已在 2021 年 1 月 26 日之前修复它。
旁注:此外,我无法重现您为 long double 获得的 max() 值。与所有其他情况一样,我得到 1。如前所述,它只是随机噪声,因为 setprecision(n) 似乎会为 n > numeric_limits::max_digits10 产生噪声。
关于c++ - 为什么 std::uniform_real_distribution::max() 返回独占上限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52354921/
当我在其中一个扬声器上打开独占模式音频流时,会发出奇怪的嗡嗡声。这种嗡嗡声不会在我的其他设备上的相同条件下发生,也不会在一般的独占推送模式或共享模式下发生。 问题似乎是 WASAPI 将周期设置为比我
我的一个类中有一个 double 值,并且有一个上限。 问题是当我尝试将此变量设置为大于其限制的值时。当发生这种情况时,我想将其设置为限制内最接近的值。 当我尝试时,尴尬的情况发生了 .getLimi
我有锁定每个函数(某个库的)的代码,我想对其进行优化。给定函数A和B ,我不介意A与任何其他同时运行 A ,或任何 B与任何其他同时运行 B ,但没有A可以在任何 B 时运行正在运行,反之亦然。线程计
当 XML 必须根据 http://www.w3.org/TR/xml-exc-c14n/ 规范化时,下面的 XML 片段应该相等吗?(注意,. 字符代表一个 ' ' 空格) . ..data .
我想限制对整个应用程序的访问 /*但对于某些 Servlet 则不然。它们应该是公开的。 有没有一种方法可以轻松做到这一点(我想象有一些排除或可能覆盖?)或者我是否必须将文件排列在子文件夹中并允许访问
在一个 spring-mvc 项目中,我对索引/主页的内容进行了测试: @RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockM
完全依赖 ARKit 自动平面检测是我不想做的事情,因为它需要时间来检测表面,然后现实生活中的表面应该有足够的纹理,因此我需要考虑一些事情提供一个选项,如果我愿意,我应该能够通过点击按钮随意添加 an
我是一名优秀的程序员,十分优秀!