草庐IT

double3c

全部标签

c++ - double 和 NaN 的比较结果是什么?

我有以下程序:#include#includeintmain(){doublea=1;doubleb=nan("");std::coutb)a)输出:00一般来说,从nan的含义-notanumber可以明显看出,任何对nan的操作本质上都是毫无意义的。从我在互联网上找到的IEEE-754我发现如果在FPU中至少有一个操作数是nan结果也是nan,但是如上例所示,我没有发现正常值与nan之间的比较。标准是怎么说的? 最佳答案 Whatdoesstandardsayaboutit?C++标准没有说明对NaN的操作如何运作。它未指定。因

c++ - 将表示二维数组的 std::vector<std::vector <double>> 转换为 cv::Mat

将std::vector的嵌套std::vector转换为cv::Mat的最优雅和最有效的方法是什么>?嵌套结构包含一个数组,即所有内部std::vector具有相同的大小并表示矩阵行。我不介意将数据从一个复制到另一个。我知道一个单一的、非嵌套的std::vector很容易,有一个构造函数:std::vectormyvec;cv::Matmymat;//fillmyvecboolcopy=true;myMat=cv::Mat(myvec,copy);嵌套vector呢? 最佳答案 我的变体(需要OpenCV2.4):intsize=

c++ - 对( double )实数 vector 进行排序并获得它们

在C++中,想要对较长的(2^20)实数vector进行排序,显然sort()可以解决问题。在我习惯了漂亮的order()函数之前使用过R,该函数产生导致排序vector的排列。例子:x={24,55,22,1}然后是排列perm={3,2,0,1}按升序将原始x映射到排序后的x。我或许可以实现一些冒泡排序,它不仅对x进行排序,而且对vector{0,1,2,...}执行相同的转置并输出两者,但我相信有人一定已经考虑过了,尤其是高效地完成了。 最佳答案 我想说最好的方法是创建一个整数0..N的vector,然后使用比较函数对该数组进

c++ - 用非零值初始化 double 组 (blas)

我已经分配了一个很大的双vector,假设有100000个元素。在我的代码中的某个时刻,我想将所有元素设置为一个常量、非零值。如果不对所有元素使用for循环,我该如何做到这一点?如果有帮助,我也在使用blas包。 最佳答案 你可以使用std::fill(#include):std::fill(v.begin(),v.end(),1);当然这本质上也只是一个循环.. 关于c++-用非零值初始化double组(blas),我们在StackOverflow上找到一个类似的问题:

c++ - 在 C++ 中防止从 float 到 double 的隐式转换

基本上,如果我想要这样的东西,doubleb=sin(2.2);但是不小心写了这样的东西,doubleb=sin(2.2f);没有错误甚至警告消息,即使这显然会导致不同的、不准确的、因此不正确的结果。可以通过强制编译器不对float进行任何隐式转换来防止这种类型的错误。有什么方法可以实现这一点,无论是通过编译开关(最好在VisualStudio中)、一些智能宏,还是一个行为类似于float/double变量并声明其自己的运算符的类?编辑:我也对使用运算符(例如doubleb=2.2f*2.2f)或赋值(doubleb=2.2f)解决类似问题感兴趣。 最佳答案

c++ - 如何在 Lua 5.2.3 中将 lua_number 从 double 正确更改为 float

我希望lua_number得到一个float而不是double。我知道我必须更改luaconf.h中的某些内容,但我不知道是什么。我正在使用Lua5.2.3和VisualStudioC++。 最佳答案 您需要编辑luaconf.h并更改这些:LUA_NUMBER到floatLUA_NUMBER_SCAN到"%f"LUA_NUMBER_FMT到"%.7g"l_mathop(x)到(x##f)lua_str2number使用strtof对于最后两个,您可能需要一个支持(部分)C99标准的C编译器。

c++ - 使用 GCC 或/和 IAR 编译时如何禁用 double 学?

我的嵌入式C代码在具有单精度FPU的CortexM4F上运行。我担心编译器多久将基于软件的double学放在诸如**float_var1=3.0*int_var/float_var_2;(3.0insteadof3.0f)**我担心我会错过其中一些双常数。我怎样才能找到所有出现的较慢的double学?使用sourceryGCC或IAR禁用double或生成错误/警告即可。请指导我实现目标的正确方法。 最佳答案 HowcanIlocatealloccurrencesofslowerdouble-precisionmath?Disabl

c++ - 原始 float 和 double 支持多少位小数?

这个问题在这里已经有了答案:'float'vs.'double'precision(6个答案)关闭7年前。我读过double存储15位数字,float存储7位数字。我的问题是,这些数字是支持的小数位数还是数字中的总位数?

C++在数学计算中将double转换为int

当我写cout我得到1.5但是当我写cout我得到6。如果3.0和2.0是double值,我的结果不应该是像6.0这样的double值吗?根据什么结果是int还是double? 最佳答案 3.0*2.0的结果非常是双(a)。但是,值的呈现并不是值。你会发现6,6.0,6.00000,0.06E2,6000E-3甚至是象征性的-6(epi×i)是所有相同的值,但具有不同的表示形式。如果您不想要默认显示(b),iostream和iomanipheader具有将数字格式化为特定格式的功能,例如使用它来获取6.0:#include#incl

c++ - double to hex string & hex string to double

我要做的是将double字符串转换为十六进制字符串,然后再转换回double。以下代码将double字符串转换为十六进制字符串。char*double2HexString(doublea){char*buf=newchar[17];//doubleis8-bytelong,sowehave2*8+terminating\0char*d2c;d2c=(char*)&a;char*n=buf;inti;for(i=0;i这似乎可行,但是,我不确定如何将生成的字符串转换回double字符串。请指教:) 最佳答案 我很惊讶地看到没有人提出标