草庐IT

浮点数二分

全部标签

c++ - 浮点值作为 C++ 数组中的索引

浮点值可以用作数组的索引吗?如果用作索引的表达式的结果是浮点值,会发生什么情况? 最佳答案 float值将被转换为int(它可以根据编译器的警告级别给出警告或错误)s1=q[12.2];//sameasq[12]s2=q[12.999999];//sameasq[12]s3=q[12.1/6.2];//sameasq[1] 关于c++-浮点值作为C++数组中的索引,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

c++ - 浮点值在发布和调试版本中表现不同

当我在Release模式和Debug模式下编译我的应用程序时,它会生成不同的浮点值。我发现的唯一原因是我保存了一个二进制跟踪日志,而发布版本中的日志与调试版本中的日志稍有不同,看起来32位浮点值的底部两位大约有1/2的差异的情况下。您会认为这种“差异”是一个错误,还是这种类型的差异是意料之中的。这是编译器错误还是内部库错误。例如:LEFTPOSandSPACINGaredefinedfloatingpointvalues.floatdef_x;intxpos;def_x=LEFTPOS+(xpos*(SPACING/2));问题与X360编译器有关。 最佳答

c++ - 将字节缓冲区 (0-255) 转换为浮点缓冲区 (0.0-1.0)

如何将字节缓冲区(从0到255)转换为浮点缓冲区(从0.0到1.0)?当然这两个值之间应该是有关系的,例如:bytebuffer中的0在floatbuffer中为.0.f,bytebuffer中的128在floatbuffer中为.5f,bytebuffer中的255在floatbuffer中为1.ffloat缓冲区。实际上这是我的代码:for(inty=0;y这运行得非常慢。我的一个friend建议我使用转换表,但我想知道是否有人可以给我另一种方法。 最佳答案 无论您是否选择使用查找表,您的代码都会在每个循环迭代中做很多实际上不需

c++ - 如何用 C++ 拟合二维散点数据

我以前使用MATLAB,对于我提出的问题,我可以使用p=polyfit(x,y,1)来估计板中散点数据的最佳拟合线。我想知道我可以依靠哪些资源来用C++实现线拟合算法。我知道这个主题有很多算法,对我来说,我希望算法应该很快,同时它可以在MATLAB中获得与polyfit函数相当的精度。 最佳答案 这个页面描述的算法比维基百科更简单,没有额外的步骤来计算均值等:http://faculty.cs.niu.edu/~hutchins/csci230/best-fit.htm.几乎从那里引用,在C++中是:#include#include

c++ - 获取最大 C++ 浮点值的平台无关方式

在C++中获取可存储在float中的最大值的最好的、平台无关的方法是什么? 最佳答案 std::numeric_limits 关于c++-获取最大C++浮点值的平台无关方式,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1484237/

c++ - 如果浮点范围更大,通过浮点的往返是否总是定义行为?

假设我有两种算术类型,一种是整数,I,和一个float,F.我还假设std::numeric_limits::max()小于std::numeric_limits::max().现在,假设我有一个正整数值i.因为F的可表示范围大于I,F(i)应始终定义行为。但是,如果我有一个浮点值f这样f==F(i),是I(f)定义明确?换句话说,是I(F(i))总是定义行为?C++14标准的相关部分:4.9Floating-integralconversions[conv.fpint]Aprvalueofafloatingpointtypecanbeconvertedtoaprvalueofanin

c++ - 查找浮点计数器的最大值

如果之前有人问过这个问题,我很抱歉,但我找不到。我想知道是否有一种方法可以计算用作计数器的单精度浮点数将达到“最大值”的点(由于丢失而无法再添加另一个值的点)精确)。例如,如果我不断添加0.1f到float我最终会达到一个值不会改变的点:constfloatINCREMENT=0.1f;floatvalue=INCREMENT;floatprevVal=0.0f;do{prevVal=value;value+=INCREMENT;}while(value!=prevVal);cout在GCC上,此输出2.09715e+06有没有办法对INCREMENT的不同值进行数学计算?我相信理论上

c++ - 如何设置浮点值的格式,使其从不使用指数表示法或尾随零?

根据ios_basemanipulators,在格式化没有指数表示法(带十进制数)的float时,我基本上可以在defaultfloat和fixed之间进行选择。但是,我想选择maximumprecision对于许多数字(例如1.),fixed会产生很多尾随零,但要避免使用指数表示法。如果设置为defaultfloat,它在大多数时间看起来是正确的,除非该值真的非常小,但不是0.。在这种情况下,默认表示会自行切换为科学记数法,这会破坏格式化输出的接收方(因为它不知道2.22045e-16是什么意思。那么,我怎样才能既吃馅饼又吃馅饼呢?也就是说,没有不必要的尾随零的非指数表示法。注意:我

c++ - double 浮点比较

我在这里有点困惑-当double值存储为不透明(二进制)字段时,它们的比较是否仍能正常工作?我面临的问题是double包含符号的前导位(即正数或负数),当它们存储为二进制数据时,我不确定它是否会被正确比较:我想确保比较能够正常进行,因为我使用double作为keytuple(e.g.)inLevelDB的一部分我想保留正数和负数的数据局部性。LevelDB仅使用不透明字段作为键,但它确实允许用户指定他/她自己的比较器。但是,我只是想确保我不指定比较器,除非我绝对需要://Three-waycomparisonfunction://ifab:positiveresult//else:ze

c++ - C++ 标准是否允许这种浮点行为?

在下面的代码中:#include#include#includeusingnamespacestd;intmain(){doublexd=1.18;int64_txi=1000000000;int64_tres1=(double)(xi*xd);doubled=xi*xd;int64_tres2=d;printf("%"PRId64"\n",res1);printf("%"PRId64"\n",res2);}使用针对32位Windows的v4.9.3g++-std=c++14我得到了输出:11799999991180000000这些值可以不同吗?我预计,即使编译器使用比double更高