草庐IT

c++ - C++ 中的 LONG float 和 double 有什么区别?

所以我知道float和double的精度有很大的不同。我明白了。promise。但是,在C++中,当调用scanf和printf时,用于指定double的符号是“%lf”,它代表longfloat,对吗?因此,虽然float不如double精确,但LONGfloat(可能称为longfloat,因为它可以通过具有更多项而“更长”)具有相同的精度,因此本质上是相同的东西?澄清一下,我的意思是:doublenumber=3.14159;printf("Thenumberis%lf",number);所以我的问题的根源是:longfloat是double的另一个名称吗?

c++ - 我如何信任从 double 到整数的转换?

我一直在研究一些用于创建直方图的简单代码,并发现以下代码:doublevalue=1.2;doublebucketSize=0.4;doublebucketId=value/bucketSize;std::cout导致疯狂输出:bucketIdasdouble:3bucketIdasint:2这基本上破坏了我对计算机的信任;)在创建直方图时为value寻找正确的bucketId时。我知道存在舍入误差等问题,但是否有针对该问题的通用解决方案?(以防万一)请不要建议在转换为int之前将0.5添加到除法结果中,因为显然它在某些情况下效果不佳(例如doublevalue=3;doublebuc

c++ - 在 C++ 中检查 double 是否为 2 的幂而无需位操作的代码

为了检查double是否是2的幂,我找到了这段代码:unsignedlonglongint&p=*(unsignedlonglongint*)&x;unsignedintexp=(p>>52)&0x7FF;if(exp==0||exp==0x7FF)returnfalse;return(p&0xFFFFFFFFFFFFFULL)==0;然而,它未能通过某些架构的基本测试。我想那是因为整数的长度不同。所以我试图找出一个不进行位操作的简单替代方案:boolisPot(doublea){returna==0.?false:(1./a)*a==1.;}假设任何除以一个不是2的幂的数字都会在尾数

c++ - 基于随机比特流生成随机浮点值

给定一个随机源(随机比特流的生成器),如何生成给定范围内均匀分布的随机浮点值?假设我的随机源看起来像这样:unsignedintGetRandomBits(char*pBuf,intnLen);我想实现doubleGetRandomVal(doublefMin,doublefMax);注意事项:我不希望结果精度受到限制(例如只有5位数)。必须严格统一分配我不是要引用现有的图书馆。我想知道如何从头开始实现。对于伪代码/代码,C++将是最重要的 最佳答案 我认为我永远不会相信您真的需要这个,但写起来很有趣。#include#includ

c++ - 计算保存在文本文件中的 2 个纬度和经度之间的距离?

我环顾四周,仍然找不到任何可以真正帮助我的东西!我编写了一个程序来计算两个城市之间使用纬度和经度的距离,城市详细信息保存在一个文件中,然后在我的程序中加载到BST中!到目前为止,一切正常,除了当我运行假设计算距离的代码时,我对每个城市都得到相同的答案!我不太确定为什么我对每个城市都得到相同的答案!请帮我指出正确的方向?这里是计算距离的代码#include#definepi3.14159265358979323846stringuserResponse;floatglobalLat1,globalLon1,globalLat2,globalLon2;for(intj=0;j>userRe

c++ - 除 double 时意外的精度损失

我有一个函数getSlope,它以4个double作为参数,并返回另一个使用给定参数按以下方式计算的double:doubleQSweep::getSlope(doublea,doubleb,doublec,doubled){doubleslope;slope=(d-b)/(c-a);returnslope;}问题是,当使用参数调用这个函数时,例如:getSlope(2.71156,-1.64161,2.70413,-1.72219);返回结果为:10.8557这对我的计算来说不是一个好的结果。我已经使用Mathematica计算了斜率,相同参数的斜率结果是:10.8452或为了精确而

c++ - 从 double 转换为 float 时检测精度损失

我正在编写一段代码,其中我必须将double值转换为浮点值。我正在使用boost::numeric_cast进行此转换,它会提醒我任何溢出/下溢。但是我也有兴趣知道这种转换是否会导致一些精度损失。例如doublesource=1988.1012;floatdest=numeric_cast(source);产生值为1988.1的dest有什么方法可以检测到这种精度损失/舍入 最佳答案 您可以将float转换回double并将此double与原始double进行比较-这应该可以让您清楚地了解是否存在精度损失。

c++ - 在 C++ 中返回引用

这个问题在这里已经有了答案:Canalocalvariable'smemorybeaccessedoutsideitsscope?(20个答案)关闭6年前。考虑以下代码,我在其中返回double&和string&。它在double的情况下工作正常,但在字符串的情况下则不然。为什么行为不同?在两种情况下,编译器甚至不会抛出Warning:returningaddressoflocalvariableortemporary因为我正在返回一个引用。#include#includeusingnamespacestd;double&getDouble(){doubleh=46.5;double&

ios - 从 X 米的单一位置坐标创建垂直经纬度

我有用户当前位置,即CLLocation坐标(位置纬度和经度)并且用户在用户当前位置的帮助下指向一个方向我现在创建了一个区域我想要更多的赛道坐标(比如2m,垂直方向距跑道4m、6m),跑道长10m。请检查图像,红点在轨道上。Pleasecheckthisimage 最佳答案 /***Returnsthedestinationpointfrominitialpointhavingtravelledthegivendistanceonthe*giveninitialbearing(bearingnormallyvariesaroundp

ios - 在带有 AND 且不带小数点的标签中显示 double

要查看最佳答案,请向下滚动到Paulw11的答案。(对于任何英语错误,我深表歉意,这不是我的第一语言)我需要解决这个问题才能继续开发我的应用。Here,我得到了截图。(我知道,这很丑陋,我正在设置约束。)问题是:即使数字是整数,它仍然显示为有理数。(例如:4显示为4.0,16显示为16.0)我想要的是:当文本字段中的数字是整数时,我希望它不带小数点出现。(4显示为4,16显示为16)当文本字段中的数字是有理数时,我希望它与属于它的小数点一起出现。(4.2显示为4.2,2.5显示为2.5)我不希望发生的事情:四舍五入任何数字。这会破坏数学。正如我所说,4.22需要是4.22。但是4.0只