草庐IT

long-double

全部标签

c++ - double 的高性能加法和乘法的常量形式

我需要在循环中有效地将一些常量添加或乘以double类型的结果以防止下溢。例如,如果我们有int,则乘以2的幂将很快,因为编译器将使用位移位。是否有一种常量形式可用于高效的double加法和乘法?编辑:似乎没有多少人理解我的问题,为我的草率道歉。我将添加一些代码。如果a是一个int,这个(乘以2的幂)会更有效率inta=1;for(...)for(...)a*=somefunction()*1024;当1024被替换为1023时。不确定如果我们想添加到int什么是最好的,但这不是我的兴趣。我对a是double的情况很感兴趣。哪些形式的常量(例如2的幂)可以有效地和相乘成double?常

c++ - std::numeric_limits<double>::epsilon() 在 Visual C++ 2015 中未定义

以下代码产生错误:std::numeric_limits::epsilon()未定义的错误。使用numeric_limits::epsilon也会产生此错误。#ifndef_USE_MATH_DEFINES#define_USE_MATH_DEFINES#endif//!_USE_MATH_DEFINES#include#includeclassplusCartesianPoly{public:staticboolisClose(doublea,doubleb){if(fabs(a-b) 最佳答案 numeric_limits在li

c++ - std::atomic<double> & 的模板特化

我有这个MCVE:#include#includetemplatevoidassertVariableHasBeenSet(T,constchar*);templatevoidassertVariableHasBeenSet&>(std::atomic&myDouble,constchar*variableName){printf("Double:%s=%f\n",variableName,myDouble.load());};intmain(){std::atomicmyDoubleAtomic{23.45};assertVariableHasBeenSet(myDoubleAtom

c++ - 无法将 INT_MIN 的值分配给 long long

signedlonglongvalue=-2147483648;cout输出2147483648(没有减号),为什么? 最佳答案 signedlonglongvalue=-2147483648;2147483648无法用32位有符号整数表示,因此将其转换为无符号整数,然后应用一元减号(不会更改任何内容),然后将其分配给签名长长。使用-2147483648LL 关于c++-无法将INT_MIN的值分配给longlong,我们在StackOverflow上找到一个类似的问题:

java - 在 C++ 中的 Java native (JNI) 方法中,在 jdoubleArray 和 vector<double> 之间进行转换

我有一个C++dll,其中包含我需要在Java程序中使用的方法。我浏览了所有关于JNI的Sun文档,以及我在网上找到的大量教程,但我似乎无法找到我的代码的问题。事实上,相当一部分代码是从各种教程和Sun网站上剪切和粘贴的。我的具体问题如下:我的C++native方法从我的Java程序接收一个jdoubleArray,它需要映射到一个C++vector,然后该vector可以传递给C++dll中的一个方法。dll中的方法返回另一个vector,然后需要映射到一个新的jdoubleArray,并返回给Java程序。问题似乎是我没有正确执行映射。我的代码如下(为简单起见,我删除了对dll方法

c++ - 海湾合作委员会 4.1.2 : error: integer constant is too large for ‘long’ type

我编译了一段关于散列函数的代码并得到了错误:整数常量对于‘long’类型来说太大了。我用谷歌搜索了一下,它说要添加后缀“ULL”,但我确实有ULL作为后缀。这个后缀只有gcc4.4.1支持,我机器上只有gcc4.1.2,不允许安装新的编译器。有什么方法可以更改代码以解决问题吗?谢谢,-托尼unsignedlonglonghash(stringk){//FNVhashunsignedlonglongx=14695981039346656037ULL;for(unsignedinty=0;y 最佳答案 1099511628211对于(3

c++ - 如何将float值传递给以double为引用值的函数

我有一个函数,其原型(prototype)如下所示:voidexample(double&var);但是,我的问题是我可能还需要使用一些浮点值来调用函数。例如floattemp=10.1;example(temp)如果我这样做,我的代码不会编译,可能是因为将浮点值传递给双引用变量。我想避免为double和float编写重载函数。有人可以建议一个更清洁/更好的方法来实现这个吗?函数基本上是一个截断函数,它截断给定的输入&是的,原始文件被修改了。谢谢。 最佳答案 模板函数怎么样?templatevoidexample(T&var);编译

c++ - 将字符串转换为 double ——失去精度

我在将字符串转换为double时遇到问题。我得到一个带有纬度/经度坐标的字符串,格式为33.9425/N118.4081/W我首先调用我的函数trimLastChar(std::string&input)两次,这将删除北、南、东、西字符,然后是正斜杠。此函数正确地返回33.9425和118.4081作为std::string。我正在使用以下代码将我的std::string转换为double...但是问题是,转换会损失精度——我怀疑是这样变圆了?//LocationInStringiswhattrimLastCharreturnsstd::stringstreamstream(locat

c++ - 如何在 C++ 中一点一点地循环 long long

如果我在C++中有longlongx;,我如何遍历数字中的每一位来检查它是0还是1?我想数一下位中有多少个 最佳答案 您需要使用移位>>>运算符:unsignedlonglongx=static_cast(your_value);//unsignedlonglongfixforissuepointedoutby@ZacHowlandincommentsunsignedintcount=0;//numberof1bitswhile(x!=0){unsignedlonglongbit=x&1;if(bit==1){count++;//.

c++ - 如何在 OpenCV 中将图像读取为 double?

我想使用opencv实现如下所示的类似功能。image=double(imread('mask.jpg'));我已经实现了类似的东西。如何将其转换为double。cv::Matimage=imread(arg[1]);其中arg[1]包含我的图像,该图像将作为double存储在Mat图像中。如何实现。 最佳答案 您正在寻找Mat::convertTo().对于灰度图:image.convertTo(image,CV_64FC1);对于彩色图片:image.convertTo(image,CV_64FC3);//orCV_64FC4f