草庐IT

double-byte

全部标签

c++ - long double 与 long int

我正在做一个计算彩票概率的程序。规范是47选5,27选1所以我做了以下事情:#includelongintchoose(unsignedn,unsignedk);longintfactorial(unsignedn);intmain(){usingnamespacestd;longintregularProb,megaProb;regularProb=choose(47,5);megaProb=choose(27,1);cout但是该程序不起作用。程序计算30秒,然后给我Process4exitedwithcode-1,073,741,676我必须将所有longint更改为longdo

c++ - 为什么 "std::vector<bool>"的大小是 16 Byte?

我正在使用memcpy将std:vectors的内容复制到原始数组。对于int、float、double等数据类型,它运行良好。当我开始复制boolvector时,我遇到了一个问题,即我得到了奇怪的值。首先,我开始为浮点vector制作测试输出:std::vectortest1(3,0);cout输出是:Sizeoftest1[0]:4Memoryaddress0:02793820Memoryaddress1:02793824Memoryaddress2:02793828这就是我所期望的。浮点大小为4字节,到下一个浮点值的距离为4字节。当我为bool执行此操作时,输出如下所示:std:

c++ - 初始化 vector<doubles> c++ 的 vector

您好,我想初始化一个大小为9的vector,其元素是大小为5的vector。我想将所有元素初始化为零vector。这种方式正确吗?vectorz(5,0);vector>diff(9,z);或者有更短的方法吗? 最佳答案 您可以在一行中完成此操作:vector>diff(9,vector(5));您可能还想考虑使用boost::multi_array为了更有效的存储和访问(它避免了双指针间接)。 关于c++-初始化vectorc++的vector,我们在StackOverflow上找到一

C++ 将静态二维 double 组转换为 double **

我的程序中有这样的矩阵:doublem[3][4]={{2,4,5,7},{4,5,1,12},{9,12,13,-4}};我想将其转换为double**类型。我已经尝试过简单的double**a=(double**)m;,但它不起作用(当我尝试读取任何值时,我得到“访问违规读取位置0x00000000。”,这意味着我正在尝试从NULL地址读取。我找到了几乎可行的解决方案:double*b=&m[0][0];double**c=&b;它在我读取字段c[0][any]时有效但是,当我尝试从字段c[1][0]中读取值时,会出现同样的NULL地址读取问题。将我的doublem[3][4]数组

c++ - 如何在 C 中将字节数组转换为 double?

我有一个包含8个字节的字节数组,我想将它们转换并用作double二进制float。有人可以告诉我如何转换吗? 最佳答案 试试这个:doublea;memcpy(&a,ptr,sizeof(double));其中ptr是指向您的字节数组的指针。如果您想避免复制,请使用union,例如union{doubled;charbytes[sizeof(double)];}u;//Storeyourdatainu.bytes//Usefloatingpointnumberfromu.d 关于c++-

c++ - Clang:模板推导失败 'double' 与 '<double>'

考虑以下代码,它使用带有可变参数的函数:#include//TypedeffunctiontypetemplateusingFunc=void(Output*...);//Functionrunnertemplatevoidrun_func(Func&func,Output*...output){for(inti=0;i用g++4.7.3编译它工作正常,运行产生1024.0正如预期的那样。使用icpc14.0.2编译会崩溃...templ.cc(21):internalerror:assertionfailed:lower_expr:badkind(shared/cfe/edgcpfe

c++ - 模板类中 float 和 double 文字的函数特化

我正在尝试找到一种解决方案,以便在模板类方法中使用常量数字文字。我正在制作一些与float或double类型一起使用的数学模板类。问题在于文字因数据类型而异(例如,“0.5f”表示float,“0.5”表示double)。到目前为止,我想出了两个解决方案。第一个的一些假设代码:templateclassSomeClass{public:TdoSomething(Tx);};templatefloatSomeClass::doSomething(floatx){floaty=0.5f;/**Docomputations...*/returnx;}templatedoubleSomeCla

c++ - g++ 在不使用 -Wconversion 的情况下将 double/float 转换为无符号整数时发出警告

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:g++-Wallnotwarningaboutdouble->intcast根据问题here,从double/float到无符号整数的直接转换是不可移植的。我发现我的代码中有一些情况会发生这种情况,如果发生这种情况,我想告诉g++警告我,但我找不到这样的选项。有谁知道是否可以选择这样做?注意:我确实看到了-Wconversion,但它也会警告我不关心的所有其他类型的转换(比如将int转换为unsignedint,根据标准这是可移植的)。编辑:这是我希望看到警告的代码示例:doubledblNumber=-23

c++ - 使用 memcpy 将 vector<double> 的内容复制到内存缓冲区

我有一个包装vector的类:templateclassPersistentVector{private:std::vectorvalues;public:std::vector&getValues()throw(){returnvalues;}....}实例是:PersistentVectormoments;我正在尝试将所有double复制到其他人分配的缓冲区中。这是我创建缓冲区的地方://invariant:numMoments=1double*data_x=newdouble[numMoments];这是我尝试将vector的内容复制到缓冲区中:doubletheMoment=m

c++ - 使用标量类型的 "const"的好处? (例如 "const double"或 "const int")

///////////////////////////////////////classA{...constdoublefunA(void){...}};Aa;doublex=a.funA();//althoughtheintentionisto//enforcethereturnvaluetobeconstandcannotbe//modified,ithaslittleeffectintherealworld.classA2{...doublefunB(void){...}};///////////////////////////////////////classA{voidset