草庐IT

long-double

全部标签

c++ - 两个区间 [a,b] 之间的 double 随机数生成

我需要生成X随机双数均匀分布在两个区间[a,b]之间,其中a和b也是双数。那些X需要在类函数内部生成数字,比如myclass::doSomething(a,b).问题是间隔[a,b]传递给了doSomething(a,b)每次doSomething(a,b)时功能都会改变函数被另一个类函数调用,比如doThat().我想要一个可以让我:1.有一个engine具有更高的范围,理想情况下,每次应用程序运行只应播种一次。2.X每次调用doSomething()时都会生成随机双数函数,应均匀分布。我下面的解决方案不允许engine的范围更大而且似乎生成的数字不一定是均匀分布的。//file:u

c++ - long long 初始化和 8 字节平台

我惊讶地发现,在关闭优化的Debug模式下,在以x64平台为目标的MSVS2012下,无法在一条指令中完成longlong初始化:;longlongl1=1;movDWORDPTR_l1$[ebp],1movDWORDPTR_l1$[ebp+4],0由于寄存器是8个字节,我希望有一条指令能够做到这一点...有吗? 最佳答案 在以x64为目标的快速控制台模式项目中尝试此操作并查看反汇编窗口:longlongl1=1;000000013F151035movqwordptr[rsp],1针对x86时的相同代码:longlongl1=1;0

c++ - 'long long long' 对于使用 log4cpp 的 GCC 来说太长了

我正在开发一个使用日志库log4cpp的QT应用程序。但是现在,在包含log4pp的头文件的地方,我得到了这个编译错误:'longlonglong'对于GCC来说太长了当我找到这个错误的根源时,头文件stdint.h在这一行打开:__MINGW_EXTENSIONtypedeflonglongint64_t;有人能告诉我如何处理吗? 最佳答案 好的,解决了,我只需要在开始时包含stdint.h 关于c++-'longlonglong'对于使用log4cpp的GCC来说太长了,我们在Sta

c++ - c++ 中的 int(或 long long)溢出如何影响模数?

假设我有两个longlong,a和b,我需要相乘,然后得到一些大k的modk值,这样a、b和k都在longlong的范围内,但不在诠释。为简单起见,a,b因此代码将是:longlonga,b,k;cin>>a>>b>>k;cout但是,因为a和b太大了,如果像上面那样相乘,溢出变成负数,那么modk就是负数,不正确。如何确保modk的值是正确的?编辑:作为奖励,这在Java中是如何工作的?是不是和预想的一样?还是需要BigInteger? 最佳答案 许多编译器提供128位整数类型。例如,使用g++你可以创建一个函数staticinl

c++ - CreateComputeShader 在使用 double 时返回 E_INVALIDARG

我需要使用DirectCompute进行某些GPGPU计算的double。当我把所有东西都变成float时,着色器编译并运行得很好。但是,当我尝试在我的着色器中的任何地方使用double时,它会编译,但在运行时调用ID3D11Device::CreateComputeShader()失败并返回E_INVALIDARG。C++端代码完全相同,请注意,我只是将着色器中的几个变量更改为double。当我使用D3D11_FEATURE_DOUBLES调用ID3D11Device::CheckFeatureSupport()时,它报告我的适配器支持double,它是AMDRadeonR9270x

c++ - long int* 到 np_intp* 平台相关转换

在我的64位办公桌面上,编译正常:#include#include...Py_Initialize();import_array();//BuildarrayobjectlongintNUMEL=3;PyObject*out_array=PyArray_SimpleNew(1,&NUMEL,NPY_DOUBLE);相反,在我的32位笔记本电脑上,这无法产生错误:error:invalidconversionfrom‘longint*’to‘npy_intp*{akaint*}’[-fpermissive]PyArray_New(&PyArray_Type,nd,dims,typenum

c++ - "Int"c++ 与 "long long"结果的乘法

这个问题在这里已经有了答案:Squaringnumberinc++,Kaprekarnumbers[duplicate](3个答案)关闭6年前。我正在尝试计算int的平方。我的代码如下所示:longlongsqr=0;intnum=77778;sqr=num*num;结果应该是6049417284但是当我检查输出时,它显示1754449988。我在做什么错误?longlong应该能够存储结果,但为什么我得到了不同的值?

c++ - 将 long 转换为 wchar_t *

感谢阅读。我认为我在这方面已经很接近了,但我可以利用一些专业知识来理解为什么我对某事的尝试没有按照我期望的方式进行。我(目前)需要的是将long类型(LONG,因为我实际上是在VC++中,但我知道这只是一个typedef)转换为wchar_t*。我能够获得我想要的结果,但我无法理解为什么我认为应该起作用的方法……不起作用。这是实现我想要的结果的代码:conststd::wstringmyString{std::to_wstring(wRect.bottom)};constwchar_t*myCharPointer{myString.c_str()};与我想采用的方法相比:constwc

c++ - 未定义模板的隐式实例化 'std::__1::function<int (double, double, double, double)>'

在我正在进行的项目中,我尝试使用curlpp库来发出一个简单的htmlGET请求。当我将cpp文件传递​​给g++时,出现以下错误:/usr/local/include/curlpp/internal/CurlHandle.hpp:185:42:error:implicitinstantiationofundefinedtemplate'std::__1::function'curlpp::types::ProgressFunctionFunctormProgressFunctor;/usr/local/include/curlpp/internal/CurlHandle.hpp:13

c++ - double /整数使用和基于范围的 for 循环中的数据缩小

我正在学习BjarneStroustrup的编程原则和实践,但遇到了困难。我目前正在阅读Vectors并且已经了解了基于范围的for循环。下面我有一些代码,在我看来,这些代码似乎是将double型读入INT;我认为这会导致缩小。intmain(){vectortemps;//temperaturesfor(doubletemp;cin>>temp;)//readintotemptemps.push_back(temp);//puttempintovector//computemeantemperature:doublesum=0;for(intx:temps)sum+=x;cout在使