草庐IT

double_bits

全部标签

c++ - 在 libc++ 和 glibc 中解析 double 时不一致的字符串流行为

使用gcc编译以下示例时和clang...#include#includeintmain(){doubleval;std::stringstreamss("6.93758e-310");ss>>val;std::cout...我有不同的行为:对于gcc,流的失败位ss.fail()未设置,而为clang设置可能需要注意的是,在这两种情况下,errno都设置为ERANGE。此外,我在本地使用clang和gcc时会得到相同的行为,除非我明确使用libc++和clang(-stdlib=libc++)而不是glibc。我不确定正确的行为是什么,但我觉得它应该是一致的。

c++ - 重载 ‘pow(const double&, double)’的调用不明确

我是C++的新手,这是我的问题:我需要这个数量:h=pow(mesh.V()[i0],1.0/3);但是每次编译程序时都会收到此错误消息:callofoverloaded‘pow(constdouble&,double)’isambiguous如果我写doubleV=mesh.V()[i0];h=pow(V,1.0/3);我得到:callofoverloaded‘pow(double&,double)’isambiguous现在我想我明白了constdouble&和double&指的是什么,但是我怎样才能转换constdouble&到double?谢谢! 最

c++ - boost::lexical_cast 和 double——奇怪的行为

为什么当我写"2.01"和"2.02"时,下面的代码会给我不同的结果?#include#include#includeintmain(){conststd::stringstr="2.02";try{constdoubleb=boost::lexical_cast(str)*100.0;std::cout(b);std::cout输出double:202int:202但是如果我将"2.02"更改为"2.01"它会给我以下输出:double:201badlexicalcast:sourcetypevaluecouldnotbeinterpretedastarget为什么?我正在使用Vis

c++ - 使用 std::complex<double> 作为 std::map 键

如何使用复数作为map中的键?这是一个无法编译的小例子:#include#includeintmain(){std::complexzero=0.0;std::map,int>theMap;return(theMap.count(zero));}我可以毫无错误地创建map,但是任何方法(例如,上面的count调用以及find、[]运算符、insert等)都会生成编译时错误。这绝对是我理解的问题,因为我使用clang和g++得到了类似的结果。看起来编译器无法比较两个复数。我创建了所有比较运算符(例如booloperator),它适用于比较复数(只要你不介意3为真,这对map应该没问题),

c++ - Boost multiprecision 失败,因为 complex 的实现试图在 _Isinf 或 _Isnan 等内部函数中转换为 double

我需要一个类BSD许可的C(++)多精度库,支持复数,所以我尝试了boost。以下代码失败:#include#includeusingnamespaceboost::multiprecision;std::complex(1.0,2.0)/std::complex(1.0,2.0)在VisualStudio2012中出现错误C2440,因为complex的实现试图在_Isinf或_Isnan等内部函数中强制转换为double。这是我的错误吗?我怎样才能解决这个问题?有更好的库吗? 最佳答案 来自C++1126.4/2:Theeffe

c++ - gdb 错误消息 : DW_OP_reg, DW_OP_piece 和 DW_OP_bit_piece

我正在调试别人的Qt程序并遇到以下我不理解的错误消息:DWARF-2expressionerror:DW_OP_regoperationsmustbeusedeitheraloneorinconjuctionwithDW_OP_pieceorDW_OP_bit_piece.我不确定这意味着什么,Google也帮不上什么忙。这里是上下文-sLocation是一个QString,它在几行之前声明过。然而,它是从内联函数创建的,所以我不确定它的值(value),并试图在附加到之前进行检查:(gdb)printqstringsuffix(QString)0xffffbd80:"sorted"(

c# - 使用 CLI 将 C# double 组传递给 C++ 函数

是的,需要的东西听起来很简单,但事实证明这是一个真正的痛苦。我在C#中有一些GUI代码(注意我以前从未使用过C#但熟悉语法)并且我有C++代码与它交互使用CLI.在C#中,我想创建一个double组,并将其发送到我的C++代码。我使用下面的代码作为传递数组的方式,并且它独立地符合要求。所以我从C#中将一个double[]数组传递给该函数。publicrefclassKernelWrapper{public:staticvoidImageNoiseFilter(System::IntPtrimageData,intimageWidth,intimageHeight,array^value

c++ - 如何在没有 float / double 的情况下生成均匀分布和高斯分布的伪随机数?

我必须在没有任何float/double操作和函数的汇编器上编写伪随机生成器,例如sin/cos、sqrt等。所以我不能用一般的方法来做到这一点。我也有随机数限制:00-0F。我该怎么做?据我了解,我首先需要生成统一编号。我是这样做的:x=(13*x+7)%16;(但它有一个问题-这是有史以来最统一的分布。如果它生成15个数字并且我知道所有这些数字,我可以100%的概率说第16位,因为在16(模块)的周期中没有重复。然后,我需要将这些数字重新生成为高斯分布。我在互联网上找到了这个解决方案,但它不起作用。for(i=0;i我应该用它做什么?(我对概率论一窍不通)我得到gx和gy的输出:U

c++ - 自定义文字适用于 long double 但不适用于 double,并且适用于按值传递但不按引用传递

我正在试验C++自定义文字。当我将类型从longdouble类型更改为double或尝试通过引用传递时,我发现下面的简单函数停止工作很奇怪。起初我认为它与constexpr的使用有关,但事实似乎并非如此,因为如果它不在operator""上,这两种方法都可以正常工作,并且从operator""中删除constexpr不会删除错误。这些是语言设计中经过深思熟虑的决定,还是我的编译器(gcc4.8.2)无法处理的细微差别?//Conversionfunction,worksfinewithbothlongdoubleand//double,andwithorwithoutpassbyref

c++ - 成员引用基类型 'double' 不是结构或 union

我是C++的新手,不知道如何修复错误,非常感谢您的帮助发生错误的部分我试图将半径输入到cirArea[]数组中,但它似乎不起作用。这是我的部分代码:intmain(){Circle*area;doublecirRadius;intnumCircle;cout>numCircle;doublecirArea[numCircle];for(inti=0;i>cirRadius;cirArea[i].setRadius(cirRadius);}}对于setRadius():voidCircle::setRadius(doubler){if(r>=0)radius=r;else{cout所以这