草庐IT

str2double

全部标签

c++ - 使用 GCC 和 C++11 实现类型 "long double"

我尝试搜索有关longdouble的信息,到目前为止,我了解到编译器对它的实现有所不同。在Ubuntu(XUbuntu)Linux12.10上使用GCC时,我得到了这个:doublePId=acos(-1);longdoublePIl=acos(-1);std::cout.precision(100);std::cout输出:PId8:3.141592653589793115997963468544185161590576171875PIl16:3.141592653589793115997963468544185161590576171875有人明白为什么他们输出(几乎)相同的东西吗

c++ - 错误 C2296 : '%' : illegal, 左操作数在 C++ 中的类型为 'double'

我必须对双数使用“%”,但在C++中它不起作用。示例:doublex;temp=x%10;我收到这个错误:errorC2296:'%':illegal,leftoperandhastype'double'如何在不将数字从double转换为整数的情况下解决这个问题?如果我转换它,我会丢失小数部分,我不想。还有其他选择吗? 最佳答案 %没有为double定义,但您可以使用fmod代替:ComputeremainderofdivisionReturnsthefloating-pointremainderofnumer/denom(roun

c++ - 错误 : invalid operands to binary % (have 'double' and 'double' )

我正在编写一个程序,其中列出了100,000个素数。它适用于10个数字,但在这么多数字之后它们变成负值。我将整数更改为长整数,但没有任何改变,然后我将它们更改为double,我得到了标题中列出的错误。我的变量应该是什么?请记住,我还是编程新手。我也看了一些以前的帖子,没有看到答案。intis_prime(doublex,chararray[]){//doesntusearraybutIputitintheredoublej=2;//dividerfor(j=2;j 最佳答案 您不能对运算符使用double,您必须使用int。你应该:

c++ - 管理 C++ 单精度和 double 混合计算的规则是什么?

例如,这些变量:result(double)a(double)b(float)c(float)d(double)一个简单的计算:result=a*(b+c)*d如何以及何时转换类型以及如何确定每次计算执行的精度? 最佳答案 所有操作都是在相同类型的对象上完成的(假设是正常的算术运算)。如果您编写的程序使用不同的类型,那么编译器将自动升级ONE参数,使它们相同。在这种情况下,花车将升级为double:result=a*(b+c)*dfloattmp1=b+c;//Plusoperationdoneonfloats.//Sotheres

c++ - stringstream clear 和 str 有什么区别

我只是想知道clear()和str("")之间有什么区别;例如:stringstreamss("StackOverflow");ss.clear();ss.str("");我想知道潜在的技术差异。 最佳答案 clear()清除stringstream中的错误状态标志。也就是说它将错误状态设置为goodbit(等于零)。str("")将关联的字符串对象设置为空字符串。他们实际上做着完全不同的事情。名字的特殊选择只会让它听起来好像他们执行类似的任务。 关于c++-stringstreamcl

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++ - 除 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进行比较-这应该可以让您清楚地了解是否存在精度损失。