草庐IT

double3c

全部标签

c++ - 如何将 std::string_view 转换为 double ?

我正在为应用程序的自定义选项文件编写C++解析器。我有一个循环,它从value必须转换为double的文本文件中以option=value的形式读取行。在伪代码中它执行以下操作:while(notEOF)statement为了处理字符串拆分和传递给函数,我使用std::string_view因为它避免了过度复制并清楚地说明了查看预先存在的std段的意图::字符串。我已经完成了所有操作,以至于std::string_viewvalue_str指向useful_statement的确切部分,其中包含我要提取的值,但我不知道从std::string_view读取double的方式。我知道st

c++ - 为什么我必须对用户定义的文字使用 long double?

这个问题在这里已经有了答案:C++11operator""withdoubleparameter(2个回答)关闭3年前。以下用户定义的文字省略了错误:constexprdoubleoperator""_kg(doubleq){returnq*1000;}但如果添加long,错误将消失,代码将按如下方式工作:constexprdoubleoperator""_kg(longdoubleq){returnq*1000;}错误是:‘constexprdoubleoperator""_kg(double)’hasinvalidargumentlist问题只是参数和返回类型可以是double而没

c++ - 如何防止隐式强制转换 double -> int?

问题同上,详情如下:我有一个类Money来处理......好吧,你猜对了。我对不允许Money和double交互(*)非常严格,所以下面的代码不可能:Moneym1(4.50);doubled=1.5;Moneym2=m1*d;//现在我正在考虑允许Money与int相乘,例如“你有6block蛋糕,每block4.50美元(所以去哪里找更便宜的蛋糕吧))。”classMoney{Money();Money(constMoney&other);explicitMoney(doubled);...Money&operator*=(inti);...}inlineconstMoneyope

c++ - 如何检测 double 浮点上溢和下溢?

我有以下变量:doubledblVar1;doubledblVar2;它们的值可能很大,但小于doublemax.我对上述变量有各种算术,比如加法、乘法和幂:doubledblVar3=dblVar1*dblVar2;doubledblVar4=dblVar1+dblVar2;doubledblVar5=pow(dblVar1,2);在以上所有内容中,我必须检查上溢和下溢。如何在C++中实现这一点? 最佳答案 很大程度上取决于上下文。要完美便携,您必须检查之前操作,例如(补充):if((astd::numeric_limits::m

c++ - 检测在 C++ 中存储为 double 的负 0

我正在做一些数学计算(尝试使用VS2010将Matlab代码转换为C++),我需要能够判断是否在某个时候我得到了一个负0。根据IEEE标准-0/+0仅在符号位上有所不同(其余均为0)。我使用以下代码(post)将我的double解释为unsignedchardoublef=-5;unsignedchar*c=reinterpret_cast(&f);for(inti=(sizeof(double)-1);i>=0;i--){printf("%02X",c[i]);}用5/-5试试,我得到了预期的结果:C014000000000000(-5)4014000000000000(5)但是当我

c++ - 为什么 std::accumulate 函数显示 vector <double> 的错误总和?

考虑以下代码来添加vector的所有元素:#include#include#include#includeusingnamespacestd;intmain(void){std::vectorV;V.push_back(1.2);V.push_back(3.6);V.push_back(5.6);doublesum=accumulate(V.begin(),V.end(),0);cout当我在Windows上的Cygwin上编译并运行它时,我在终端得到的输出为ThesumoftheelementsofthevectorVis9accumulate函数似乎将所有数字四舍五入并将它们相加,

c++ - 什么会导致 "corrupted double-linked list"错误?

我在处理相当复杂的代码时遇到了问题。我无法生成重现错误的简短片段,因此我将尝试用文字解释问题。代码随机崩溃并出现错误***glibcdetected***gravtree:corrupteddouble-linkedlist:0x000000001aa0fc50***调试表明它来自代码释放对象的行。该对象似乎没有任何问题。它存在,我可以在错误发生时访问它的数据。对象的析构函数是微不足道的,不做任何事情。所以,我有点卡住了。您认为“免费”在何种情况下会失败? 最佳答案 尝试在Valgrind下运行您的程序.它可能会为您指出更早的原因,

c++ - 微软为何放弃 long double 数据类型?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭11年前。社区审核了是否要重新打开这个问题8个月前并关闭:原始关闭原因未解决前段时间我写了一个程序,它使用了一些阶乘函数。我使用longdouble数据类型来支持“相对”大数字。现在,我从代码块更改为Visualstudio2010,我想知道为什么我的程序不再工作,直到经过一些研究后我意识到MS已经放弃了longdouble数据类型。这有什么特别的原因吗?对我

c++ - 带有 char、double、int 和 t 的结构的大小

这个问题在这里已经有了答案:Whyisn'tsizeofforastructequaltothesumofsizeofofeachmember?(13个回答)关闭8年前。当我只运行代码片段时int*t;std::cout它给了我这样的结果:1844总计:17个。但是当我测试包含这些数据类型的sizeof结构时,它给了我24,我很困惑。额外的7个字节是什么?这是代码#include#includestructstruct_type{inti;charch;int*p;doubled;}s;intmain(){int*t;//std::cout:编辑我已经像这样更新了我的代码#includ

c++ - 哪个更快/首选 : memset or for loop to zero out an array of doubles?

doubled[10];intlength=10;memset(d,length*sizeof(double),0);//orfor(inti=length;i--;)d[i]=0.0; 最佳答案 如果您真的在乎,您应该尝试衡量。然而,最便携的方式是使用std::fill():std::fill(array,array+numberOfElements,0.0); 关于c++-哪个更快/首选:memsetorforlooptozerooutanarrayofdoubles?,我们在Sta